Как добавить порядковые номера строк на основе значений столбцов SQL Server - PullRequest
0 голосов
/ 20 октября 2018

У меня есть следующая таблица в SQL Server:

DesiredRowNo. Customer  Date        NID                 SID     Contacts  AG
 1               AAA    04/09/2018  15357989260016600   100743  1          1
 1               AAA    04/09/2018  15358110980018300   100743  1          1
 1               AAA    04/09/2018  15358197620012800   100743  1          1
 2               AAA    21/09/2018  15358902310016400   100743  1          1
 2               AAA    21/09/2018  15358999300015200   100743  1          1
 3               AAA    29/09/2018  15359624190012200   100743  1          1
 3               AAA    29/09/2018  15359896100010500   100702  1          1
 4               AAA    30/09/2018  15360551640011900   100743  1          1
 1               BBB    05/09/2018  15357989260016600   100743  1          1
 1               BBB    05/09/2018  15358110980018300   100743  1          1
 2               BBB    08/09/2018  15358197620012800   100743  1          1
 3               BBB    15/09/2018  15358902310016400   100743  1          1
 3               BBB    15/09/2018  15358999300015200   100743  1          1
 4               BBB    19/09/2018  15359624190012200   100743  1          1
 5               BBB    24/09/2018  15359896100010500   100702  1          1
 5               BBB    24/09/2018  15360551640011900   100743  1          1

Мне нужен 1-й столбец (DesiredRowNo.) Для отображения номера ранга / строки в зависимости от клиента и даты.Таким образом, для Customer AAA все строки с одинаковой датой ранжируются как 1 , затем следующая уникальная дата ранжируется как 2 и так далее.(должно быть последовательно на основе даты)

См. значения DesiredRowNo. выше для лучшего объяснения того, чего я пытаюсь достичь.

Я пытался использовать;

ROW_NUMER() over (partition by Customer, date order by date) 

Но, похоже, это не дает правильную последовательность при необходимости.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Попробуйте это:

 select  tab.DesiresRowNo.,final.Customer,
final.NID,final.SID,final.Contacts,final.AG
 from Table final
 left join 
 ( select
 ROW_NUMBER() OVER(ORDER BY Customer ASC) AS DesiresRowNo.,
 Customer,Date
 from Table
 group by Customer,Date )tab
 on final.Customer=tab.Customer
 and final.Date=tab.Date
0 голосов
/ 20 октября 2018

Упс, это был массивный недосмотр.Я исправил это с помощью этого:

DENSE_RANK() over (partition by Customer order by date)

Спасибо за ваше управление Ларну

...