Получение нумерованных данных по группам

Есть основная таблица: Section(id,Name)

Вторичные таблицы:

  1. Remarks(id,RemarkText,SendDate)
  2. SectionRemark(id, refSection,refRemark, RemarkTextEdited)

Собираюсь создать вьюху Section_RemarkView где можно получать список по группировке Section с нумерациями + Cортировка по Remarks.SendDate,SectionRemark.id

Пример 1:

Select * from Section_RemarkView where refSection=22

Результат:

Num id refSection RemarkText SendDate
1 1001 22 Замечания 1 2022-12-01
2 1002 22 Замечания 2 2022-12-03
3 1006 22 Замечания 5 2022-12-05
4 1003 22 Замечания 3 NULL
5 1004 22 Замечания 4 NULL

Пример 2:

Select * from Section_RemarkView where refSection in (10,22)

Результат:

Num id refSection RemarkText SendDate
1 900 10 Замечания 11 2022-12-01
2 901 10 Замечания 22 2022-12-02
3 903 10 Замечания 44 2022-12-03
4 902 10 Замечания 33 NULL
1 1001 22 Замечания 1 2022-12-01
2 1002 22 Замечания 2 2022-12-03
3 1006 22 Замечания 5 2022-12-05
4 1003 22 Замечания 3 NULL
5 1004 22 Замечания 4 NULL

Подскажите пожалуйста, как составить SQL-запрос вьюхи чтобы получить такой результат?


Ответы (1 шт):

Автор решения: niz_sh

Запрос вьюхи:

SELECT CAST(ROW_NUMBER() OVER(PARTITION BY refSection ORDER BY ISNULL(r.SendDate, GETDATE()) ASC, sr.id ASC) AS int) AS RowNumber
    , sr.id
    , ISNULL(sr.RemarkTextEdited, r.RemarkText) AS RemarkText
    , sr.refSection
    , r.SendDate
FROM SectionRemark sr
LEFT JOIN Remarks r ON r.id = sr.refRemark
→ Ссылка