如何根据特定列创建 sql 序列?
How do I create a sql sequence based on a specific column?
我必须在 SQL 中使用 VERSION 列的序列执行类似以下示例的操作:
ID
VERSION
1
1
1
2
2
1
3
1
3
2
3
3
4
1
我的意思是,当输入具有相同 ID 的新记录时,VERSION 增加 1,如果它是不同的 ID,则该 ID 再次从 1 开始,有什么想法吗?
你需要的是ROW_NUMBER()
解析函数如
SELECT id, ROW_NUMBER() OVER (PARTITION BY id ORDER BY 0) AS version
FROM t
其中PARTITION BY
执行GROUPING BY
,而ORDER BY
仅代表强制性(所以,后面是任意常数)
我必须在 SQL 中使用 VERSION 列的序列执行类似以下示例的操作:
ID | VERSION |
---|---|
1 | 1 |
1 | 2 |
2 | 1 |
3 | 1 |
3 | 2 |
3 | 3 |
4 | 1 |
我的意思是,当输入具有相同 ID 的新记录时,VERSION 增加 1,如果它是不同的 ID,则该 ID 再次从 1 开始,有什么想法吗?
你需要的是ROW_NUMBER()
解析函数如
SELECT id, ROW_NUMBER() OVER (PARTITION BY id ORDER BY 0) AS version
FROM t
其中PARTITION BY
执行GROUPING BY
,而ORDER BY
仅代表强制性(所以,后面是任意常数)