具体枚举在 t-sql - SQL 服务器
Specific enumerate in t-sql - SQL Server
有人知道如何 enumerate
t-sql
中的这种情况(res_enum
字段中枚举的结果):
id num res_enum
1 5 1
1 5 1
2 5 1
2 5 1
3 5 1
4 1 2
4 7 3
5 7 3
5 5 4
5 5 4
6 3 5
7 5 6
7 9 7
7 9 7
7 4 8
8 4 8
8 1 9
试试这个答案。
DECLARE @TABLE TABLE(ID INT, NUM INT)
INSERT INTO @TABLE VALUES(1,5)
INSERT INTO @TABLE VALUES(1,5)
INSERT INTO @TABLE VALUES(2,5)
INSERT INTO @TABLE VALUES(2,5)
INSERT INTO @TABLE VALUES(3,5)
INSERT INTO @TABLE VALUES(4,1)
INSERT INTO @TABLE VALUES(4,7)
INSERT INTO @TABLE VALUES(5,7)
INSERT INTO @TABLE VALUES(5,5)
INSERT INTO @TABLE VALUES(5,5)
INSERT INTO @TABLE VALUES(6,3)
INSERT INTO @TABLE VALUES(7,5)
INSERT INTO @TABLE VALUES(7,9)
INSERT INTO @TABLE VALUES(7,9)
INSERT INTO @TABLE VALUES(7,4)
INSERT INTO @TABLE VALUES(8,4)
INSERT INTO @TABLE VALUES(8,1)
SELECT T1.ID,T1.NUM,SUM(CASE WHEN T1.NUM=t2.NUM THEN 0 ELSE 1 END) OVER(ORDER BY T1.RN)[res_enum]
FROM (
SELECT *,ROW_NUMBER() OVER(ORDER BY ID)RN
FROM @TABLE
) T1
LEFT JOIN (
SELECT *,ROW_NUMBER() OVER(ORDER BY ID)RN
FROM @TABLE
) T2 ON T1.RN=T2.RN+1
结果:
ID NUM res_enum
----------- ----------- -----------
1 5 1
1 5 1
2 5 1
2 5 1
3 5 1
4 1 2
4 7 3
5 7 3
5 5 4
5 5 4
6 3 5
7 5 6
7 9 7
7 9 7
7 4 8
8 4 8
8 1 9
希望这是你需要的。
有人知道如何 enumerate
t-sql
中的这种情况(res_enum
字段中枚举的结果):
id num res_enum 1 5 1 1 5 1 2 5 1 2 5 1 3 5 1 4 1 2 4 7 3 5 7 3 5 5 4 5 5 4 6 3 5 7 5 6 7 9 7 7 9 7 7 4 8 8 4 8 8 1 9
试试这个答案。
DECLARE @TABLE TABLE(ID INT, NUM INT)
INSERT INTO @TABLE VALUES(1,5)
INSERT INTO @TABLE VALUES(1,5)
INSERT INTO @TABLE VALUES(2,5)
INSERT INTO @TABLE VALUES(2,5)
INSERT INTO @TABLE VALUES(3,5)
INSERT INTO @TABLE VALUES(4,1)
INSERT INTO @TABLE VALUES(4,7)
INSERT INTO @TABLE VALUES(5,7)
INSERT INTO @TABLE VALUES(5,5)
INSERT INTO @TABLE VALUES(5,5)
INSERT INTO @TABLE VALUES(6,3)
INSERT INTO @TABLE VALUES(7,5)
INSERT INTO @TABLE VALUES(7,9)
INSERT INTO @TABLE VALUES(7,9)
INSERT INTO @TABLE VALUES(7,4)
INSERT INTO @TABLE VALUES(8,4)
INSERT INTO @TABLE VALUES(8,1)
SELECT T1.ID,T1.NUM,SUM(CASE WHEN T1.NUM=t2.NUM THEN 0 ELSE 1 END) OVER(ORDER BY T1.RN)[res_enum]
FROM (
SELECT *,ROW_NUMBER() OVER(ORDER BY ID)RN
FROM @TABLE
) T1
LEFT JOIN (
SELECT *,ROW_NUMBER() OVER(ORDER BY ID)RN
FROM @TABLE
) T2 ON T1.RN=T2.RN+1
结果:
ID NUM res_enum
----------- ----------- -----------
1 5 1
1 5 1
2 5 1
2 5 1
3 5 1
4 1 2
4 7 3
5 7 3
5 5 4
5 5 4
6 3 5
7 5 6
7 9 7
7 9 7
7 4 8
8 4 8
8 1 9
希望这是你需要的。