Подтвердить что ты не робот

Как вернуть инкрементный номер группы для каждой группы в SQL

Тем, кто может помочь,

Я хотел бы создать запрос данных в SQL для поэтапного числа групп строк, сгруппированных по общему дате времени и сохранения "групповых чисел" приращения в следующем datetime и т.д. Эти "номера групп" не должны reset для каждой группы, как я видел при использовании инструкции по разделу. Вот мои данные:

ts_DateTime          |ID   |Value|RowFilter|RequiredResult
--------------------------
2013/01/09 09:23:16  |8009 |0    |1        |1
2013/01/09 09:23:16  |8010 |0    |2        |1
2013/01/09 09:23:16  |8026 |0    |3        |1

2013/01/09 09:23:22  |8026 |0    |1        |2

2013/01/09 09:23:28  |8009 |0    |1        |3
2013/01/09 09:23:28  |8010 |0    |2        |3
2013/01/09 09:23:28  |8026 |0    |3        |3

2013/01/09 09:27:03  |8009 |0    |1        |4
2013/01/09 09:27:03  |8010 |0    |2        |4
2013/01/09 09:27:03  |8026 |0    |3        |4

2013/01/09 09:27:09  |8009 |0    |1        |5
2013/01/09 09:27:09  |8010 |0    |2        |5
2013/01/09 09:27:09  |8026 |0    |3        |5

2013/01/09 09:27:15  |8009 |0    |1        |6
2013/01/09 09:27:15  |8010 |0    |2        |6
2013/01/09 09:27:15  |8026 |0    |3        |6


Запрос, который я использую для получения этих результатов, следующий:

select hl.ts_DateTime,  hl.Tagname as [ID],  hl.TagValue as [Value],
ROW_NUMBER() OVER (PARTITION BY hl.ts_datetime ORDER BY hl.tagname) AS RowFilter
from Table1 hl

Итак, в основном, глядя на столбец RowFilter, я получаю уникальный номер ROW для раздела ts_DateTime. Я действительно нуждаюсь в том, что для каждого раздела ts_DateTime столбец RowFilter должен выглядеть как столбец Требуемый результат.

4b9b3361

Ответ 1

вы не должны использовать ROW_NUMBER(),

  • используйте DENSE_RANK() вместо
  • удалить PARTITION BY

запрос,

SELECT hl.ts_DateTime,  
       hl.Tagname as [ID],  
       hl.TagValue as [Value],
       DENSE_RANK() OVER (ORDER BY ts_datetime) AS RowFilter
FROM   Table1 hl 
ORDER  BY RowFilter