SQL 当前一个 id 列为空时重置 row_number
SQL reset row_number when previous id column null
这很难解释,所以我举个例子。
我需要 SQL(ms 服务器),我假设它在分区上有 row_number 但无法让它工作。
我有这个 table:
ID
PreviousID
Data
1
a
2
1
b
3
2
c
4
d
5
4
e
6
f
我想要这些结果:
ID
NewID
Data
1
1
a
2
1
b
3
1
c
4
2
d
5
2
e
6
3
f
另一个只有每个序列的新 ID:
NewID
Data
1
a
2
d
3
f
除了行号 new id,它还可以有序列的第一个 id,只要它能标识序列,哪个更容易。
您似乎想要窗口 COUNT
行,其中 PreviousID
的值为 NULL
。
SELECT ID,
COUNT(CASE WHEN PreviousID IS NULL THEN 1 END) OVER (ORDER BY ID) AS NewID,
Data
FROM dbo.YourTable;
这很难解释,所以我举个例子。 我需要 SQL(ms 服务器),我假设它在分区上有 row_number 但无法让它工作。
我有这个 table:
ID | PreviousID | Data |
---|---|---|
1 | a | |
2 | 1 | b |
3 | 2 | c |
4 | d | |
5 | 4 | e |
6 | f |
我想要这些结果:
ID | NewID | Data |
---|---|---|
1 | 1 | a |
2 | 1 | b |
3 | 1 | c |
4 | 2 | d |
5 | 2 | e |
6 | 3 | f |
另一个只有每个序列的新 ID:
NewID | Data |
---|---|
1 | a |
2 | d |
3 | f |
除了行号 new id,它还可以有序列的第一个 id,只要它能标识序列,哪个更容易。
您似乎想要窗口 COUNT
行,其中 PreviousID
的值为 NULL
。
SELECT ID,
COUNT(CASE WHEN PreviousID IS NULL THEN 1 END) OVER (ORDER BY ID) AS NewID,
Data
FROM dbo.YourTable;