我拼命想在这里找到这个问题,但找不到与这个问题相关的任何内容.
在SQL(SMSS)中,我想要一个ID列.应根据同一表中的3列生成ID的值.
ID | column1 | column2 | column3
1 | 2016 | 101 | 1
2 | 2017 | 101 | 1
2 | 2017 | 101 | 1
3 | 2017 | 303 | 1
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我生成这个ID吗?
首先,请注意在数据库表中有重复的行不是一个好主意.数据库表中的行应该是唯一的.
但是,这并不意味着您的表只包含这些列 - 它可能很好地包含与您的问题无关的其他列,所以这里是:
使用DENSE_RANK().
首先,创建并填充样本表(请在将来的问题中保存此步骤)
DECLARE @T AS TABLE
(
column1 int,
column2 int,
column3 int
)
INSERT INTO @T (column1, column2, column3) VALUES
(2016, 101, 1),
(2017, 101, 1),
(2017, 101, 1),
(2017, 303, 1)
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT DENSE_RANK() OVER(ORDER BY Column1, Column2, Column3) AS ID,
Column1,
Column2,
Column3
FROM @T
Run Code Online (Sandbox Code Playgroud)
结果:
ID Column1 Column2 Column3
1 2016 101 1
2 2017 101 1
2 2017 101 1
3 2017 303 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1586 次 |
| 最近记录: |