gpt4 book ai didi

sql - TSQL 递增一列并基于另一列重新开始

转载 作者:行者123 更新时间:2023-12-04 23:51:24 24 4
gpt4 key购买 nike

我有一个表格如下:

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 上。这个表可能会变得非常大。谢谢!

最佳答案

我不会存储排名值——它们需要维护。我通常会为这样的事情使用 View :

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

关于sql - TSQL 递增一列并基于另一列重新开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com