我在 SQLserver 中工作。我有几行完全相同的数据,如下所示:

hm       dep        num
517     577578  308330148120004
517     577578  308330148120004
517     577578  308330148120004
517     577578  308330148120004

我想用数据的行号更新“hm”部分,如下所示:
hm       dep        num
1       577578  308330148120004
2       577578  308330148120004
3       577578  308330148120004
4       577578  308330148120004

我该怎么做?谢谢!

最佳答案

您可以将可更新的 Common Table Expression (CTE)ROW_NUMBER() 函数一起使用:

WITH CTE AS
(   SELECT  hm,
            dep,
            num,
            RowNumber = ROW_NUMBER() OVER(PARTITION BY dep, num ORDER BY hm)
    FROM    T
)
UPDATE  CTE
SET     hm = RowNumber;

Example on SQL Fiddle

这基本上以任何顺序排列相同的行,然后在分配该顺序后将列 hm 设置为行号。

关于sql - 如何在 SQL 中更新相同的数据行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21015921/

10-11 01:38