use*_*008 2 sql t-sql sql-server-2008
如果这是一个重复的问题,我提前给了Apolgoies,我没有查找:(
我有一张表看起来像:
VersionID DocumentID VersionNo
111 12345 1
112 12345 2
113 12345 3
Run Code Online (Sandbox Code Playgroud)
我需要颠倒'VersionNo'列的顺序(所有其他列保持不变)如下:
VersionID DocumentID VersionNo
111 12345 3
112 12345 2
113 12345 1
Run Code Online (Sandbox Code Playgroud)
我正在考虑CTE和ROW_NUMBER()OVER,但未能使其正常工作......
任何帮助将受到高度赞赏.
谢谢
试试这个:
SELECT VersionID, DocumentID, ROW_NUMBER() OVER(PARTITION BY DocumentID ORDER BY VersionID DESC) as VersionNo
FROM YOUR_TABLE
Run Code Online (Sandbox Code Playgroud)
如果您需要更新表,请使用以下命令:
;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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |