我有一张表格如下:
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上。这个表可能会非常大。谢谢!
答案 0 :(得分:5)
我不会存储排名值 - 他们需要维护。我通常会使用这样的观点:
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
但是你可以在UPDATE中使用WITH语句:
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