如果此值先前存在于行中,我想设置数字。我想要低于输出。
Date Empno Count
-------------------------------------------------------
2018-08-01 06:00:00.000 10103612 1
2018-08-02 14:30:54.000 10103610 1
2018-08-03 06:30:00.000 10103660 1
2018-08-04 06:00:00.000 10103660 2
2018-08-04 19:15:00.000 10103610 2
2018-08-05 12:00:00.000 10103603 1
2018-08-05 17:30:00.000 10103603 2
2018-08-06 06:30:00.000 10103660 3
2018-08-06 07:00:00.000 10103531 1
即,如果Empno
在列表中第二次或第三次出现,我想在下一栏中显示它的计数。您可以在10103660
中看到它在列表中出现3次,因此计数在列表中每次都会递增。
ROW_NUMBER()与OVER()结合使用,可以计算Empno
列中有多少行具有相同的值。
以下将返回EmpnoCount
,它将告诉您在Empno
列中有多少记录与EmpnoCount
的记录具有相同的值:
SELECT [Date],
[Empno],
ROW_NUMBER() OVER (PARTITION BY [Empno] ORDER BY [Date]) AS EmpnoCount
FROM INSERT_TABLE_NAME
ORDER BY [EmpnoCount] DESC
结果应该是最重复的Empno
值的降序。
更新#1
Working example link到SQL Fiddle,显示上述查询的结果。
你可以简单地做一个ROW_NUMBER()
与OVER()
窗口功能
SELECT [Date],
[Empno],
ROW_NUMBER() OVER (PARTITION BY [Empno] ORDER BY [Date]) as [Count]
FROM yourtable
ORDER BY [Date];