[英]Change the sequence using SQL Query
要与SQL查询排序。 有没有更短的方法来更新它,还是应该更新整个表。
我的表如下:
DECLARE @tab TABLE (ID INT IDENTITY, Name VARCHAR(10), Seq INT)
INSERT INTO @tab VALUES('A',1),('B',1),('C',1),('D',3),('E',4),('F',5),('G',6),('H',7),('I',8)
SELECT * FROM @tab ORDER BY Seq
我想更改顶部显示ID为7、8、9的序列显示列。 我想要的输出应该是
DECLARE @tab TABLE (ID INT IDENTITY, Name VARCHAR(10), Seq INT)
INSERT INTO @tab VALUES('A',4),('B',5),('C',6),('D',7),('E',8),('F',9),('G',1),('H',2),('I',3)
SELECT * FROM @tab ORDER BY Seq
ROW_NUMBER
是您的朋友,只需根据名称断点计算2个不同的值即可。
;WITH RowNumbers AS
(
SELECT
T.ID,
RegularRowNumber = 3 + ROW_NUMBER() OVER (ORDER BY T.Name),
AfterGRowNumber = -6 + ROW_NUMBER() OVER (ORDER BY T.Name),
T.Seq,
T.Name
FROM
@tab AS T
)
UPDATE R SET
Seq = CASE WHEN R.Name >= 'G' THEN AfterGRowNumber ELSE RegularRowNumber END
FROM
RowNumbers AS R
结果:
ID Name Seq
1 A 4
2 B 5
3 C 6
4 D 7
5 E 8
6 F 9
7 G 1
8 H 2
9 I 3
可能需要考虑使用ID
代替Name
进行排序(如果适用)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.