sql - T-SQL 重新排序表中的行

标签 sql sql-server-2008 tsql

如果这是一个重复的问题,我没有查到:(

我有一个看起来像这样的表:

VersionID DocumentID VersionNo
111       12345         1
112       12345         2
113       12345         3

我需要将“VersionNo”列(所有其他列保持不变)的顺序颠倒如下:

VersionID DocumentID VersionNo
111       12345         3
112       12345         2
113       12345         1

我在考虑 CTE 和 ROW_NUMBER() OVER 但无法使其正常工作...

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

试试这个:

SELECT VersionID, DocumentID, ROW_NUMBER() OVER(PARTITION BY DocumentID ORDER BY VersionID DESC) as VersionNo 
FROM YOUR_TABLE

如果你需要更新你的表,使用这个:

;WITH CTE AS (
    SELECT VersionID, DocumentID, ROW_NUMBER() OVER(PARTITION BY DocumentID ORDER BY VersionID DESC) as VersionNoNew
    FROM YOUR_TABLE
)
UPDATE CTE
SET VersionNo = VersionNoNew 

关于sql - T-SQL 重新排序表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10087712/

相关文章:

sql - 为什么数字 0 计算为空格

sql - OFFSET 命令附近的语法不正确

mysql - 按 t1.date 连接不相关的表(t2.startdate 和 t2.enddate 之间)

sql - ALTER COLUMN 的执行时间

sql - 如何将 Laravel 迁移转换为原始 SQL 脚本?

java - 即使存在约束违规异常,主键也会自动递增 Mysql(5.6.34)

c# - 合并 gridview 行并消除重复项

SQL 服务器 2008 : What is the best way for inserting big chunk of data?

sql - 将 XML 导入 SQL Server

sql - 如何将属性值对列表转换为列为属性的平面表