Создать порядковый номер на основе сгруппированных значений - PullRequest
0 голосов
/ 18 мая 2018

Я хотел бы создать порядковый номер на основе некоторых столбцов. В приведенном ниже примере я хотел бы сгруппировать по Column1 и Column2 без потери данных в Column3.

Column1     Column2         Column3
A           SharedData      Data1
A           SharedData      Data2
A           SharedData      Data3
B           SharedData      Data1
B           SharedData      Data2
B           SharedData      Data3

Ожидаемые результаты

Seq     Column1     Column2         Column3
1       A           SharedData      Data1
2       A           SharedData      Data2
3       A           SharedData      Data3
1       B           SharedData      Data1
2       B           SharedData      Data2
3       B           SharedData      Data3

Я перечитал и попробовал ROW_NUMBER(), DENSE_RANK() и RANK(), но я не уверен, сработают ли они или как их реализовать в моем случае.

Можно ли получить ожидаемый результат?

1 Ответ

0 голосов
/ 18 мая 2018

row_number () - это правильная оконная функция, которую нужно использовать.

'partition by' делает так, чтобы вы получали различную последовательность чисел для каждого отдельного значения в разделе по спецификации (их может быть больше, чемодин столбец, указанный здесь), и последовательность сортируется по спецификации 'order by' (опять же, это может быть больше одного столбца; каждый столбец может быть отсортирован как asc или desc, так же, как и обычный синтаксис 'order by').

Эта оконная функция была введена в SQL Server 2008.

select
  row_number() over (partition by Column1 order by Column3) as Seq,
  Column1,
  Column2,
  Column3
from
  mytable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...