Подсчитайте количество повторяющихся значений в строке в SQL Server - PullRequest
0 голосов
/ 03 сентября 2018

Я хочу установить число, если это значение ранее присутствовало в строке. Я хочу ниже вывода.

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 раза, поэтому счетчик увеличивается с каждым разом в списке.

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

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

Рабочий пример ссылки на SQL Fiddle, который показывает результаты вышеуказанного запроса.

0 голосов
/ 03 сентября 2018

Вы можете просто сделать ROW_NUMBER() с OVER() оконной функцией

SELECT [Date], 
       [Empno], 
       ROW_NUMBER() OVER (PARTITION BY [Empno] ORDER BY [Date]) as [Count]
FROM   yourtable
ORDER BY [Date];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...