Я хочу создать запрос на выборку в SQL Сервер, где я группирую строки по столбцу (BaseId), а также упорядочиваю их по Status, RTime и Version. Я хочу добавить столбец «isFirst», который имеет значение 1, если значение BaseId является первым в группе, и 0, если это не так.
Моя пример таблицы:
Table name: Head
Id BaseId Name RTime Status Version
2 2 abc 04-12 12:34 1 1
3 3 xyz 04-12 13:10 9 1
4 2 abc 04-13 14:25 0 2
5 3 xyz 04-14 12:34 0 2
6 3 xyz 04-14 13:10 9 3
7 3 xyz 04-16 14:25 1 4
8 2 abc 04-16 17:40 1 3
9 9 sql 04-17 02:23 9 1
10 9 sql 04-17 07:31 0 2
Ожидаемый результат:
isFirst Id BaseId Name RTime Status Version
1 10 9 sql 04-17 07:31 0 2
0 9 9 sql 04-17 02:23 9 1
1 5 3 xyz 04-14 12:34 0 2
0 7 3 xyz 04-16 14:25 1 4
0 6 3 xyz 04-14 13:10 9 3
0 3 3 xyz 04-12 13:10 9 1
1 4 2 abc 04-13 14:25 0 2
0 8 2 abc 04-16 17:40 1 3
0 2 2 abc 04-12 12:34 1 1
Мой запрос теперь выглядит следующим образом:
SELECT *
FROM Head
ORDER BY BaseId desc, Status, RTime desc, Version desc
Я думаю, что я должен использовать CASE
для создания столбца isFirst, но мне не повезло, поэтому далеко. Кто-нибудь может мне помочь?