Joh*_*ohn 3 sql t-sql sql-server sql-server-2008
我有一张表如下:
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
Run Code Online (Sandbox Code Playgroud)
我想让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
Run Code Online (Sandbox Code Playgroud)
这样做的任何想法?我在SQL Server 2008上.这个表可能会非常大.谢谢!
我不会存储排名值 - 他们需要维护.我通常会使用这样的视图:
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
Run Code Online (Sandbox Code Playgroud)
但是你可以在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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2098 次 |
| 最近记录: |