Получение нумерованных данных по группам
Есть основная таблица: Section(id,Name)
Вторичные таблицы:
Remarks(id,RemarkText,SendDate)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