TSQL увеличивает столбец и начинает заново на основе другого столбца. - PullRequest
3 голосов
/ 02 октября 2010

У меня есть следующая таблица:

colA   colB(unique)   colC
---------------------------------
1      1449           0.50000000
1      1451           1.03400000
1      2404           5.98750000
1      1454           6.00000000
3      1465           1.40000000
3      1467           1.56000000
3      1476           3.00000000
3      1469           4.00000000
3      1490           5.00000000

Я хочу сделать col C увеличивающимся целым числом (можно оставить масштаб), который начинается заново при изменении colA, например:

colA  colB (unique)  colC
----------------------------------
1     1449           1.00000000
1     1451           2.00000000
1     2404           3.00000000
1     1454           4.00000000
3     1465           1.00000000
3     1467           2.00000000
3     1476           3.00000000
3     1469           4.00000000
3     1490           5.00000000

Есть идеи для этого? Я на SQL Server 2008. Эта таблица может быть очень большой. Спасибо!

1 Ответ

5 голосов
/ 02 октября 2010

Я бы не хранил ранжированные значения - их нужно поддерживать.Я бы обычно использовал представление для таких вещей:

CREATE VIEW your_view AS
  SELECT t.cola,
         t.colb,
         ROW_NUMBER() OVER(PARTITION BY t.cola
                               ORDER BY t.colc) AS colc
    FROM YOUR_TABLE t

Но вы можете использовать инструкцию WITH в UPDATE:

WITH summary AS (
  SELECT t.cola,
         t.colb,
         t.colc,
         ROW_NUMBER() OVER(PARTITION BY t.cola
                               ORDER BY t.colc) AS cold
    FROM YOUR_TABLE t)
UPDATE summary
   SET colc = cold
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...