我正在尝试通过添加一个列来修改表,该列可以标记所有重复项 Runner_Name
基于 Track_Num
.我尝试使用:
SELECT [Track_Num],
ROW_NUMBER() OVER (PARTITION BY [Track_Num] ORDER BY [Runner_Name]) - 1 As Dup,
[Runner_Name]
FROM [runner]
但它不起作用,它只是对
Runner_Name
进行排序表
runner
看起来像这样:Track_Num Runner_Name
1 John
1 John
1 Jack
2 Amy
2 Mary
2 John
3 Josh
3 Josh
3 Taylor
我希望得到的所需表是:
Track_Num Runner_Name Dup
1 John 1
1 John 1
1 Jack NULL
2 Amy NULL
2 Mary NULL
2 John NULL
3 Josh 1
3 Josh 1
3 Taylor NULL
最佳答案
也许只是将窗口函数包装在 sign(nullif( ... ,1))
中
示例
Select *
,Dup = sign(NullIf(sum(1) over (partition by [Track_Num],[Runner_Name] ) ,1))
From [runner]
退货
Track_Num Runner_Name Dup
1 Jack NULL
1 John 1
1 John 1
2 Amy NULL
2 John NULL
2 Mary NULL
3 Josh 1
3 Josh 1
3 Taylor NULL
关于sql-server - 如何添加一个新列,根据 SQL Server 中另一列的值标记列的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56192674/