Я всегда грубо пробираюсь через решение проблемы получения идентификатора, связанного с агрегированной операцией, такой как min и max, через некоторый некрасивый SQL-код.Мне просто интересно, если есть правильный / чистый способ решить эту проблему.Предположим, у вас есть следующее:
SELECT 1 AS groupid, 1 AS id, 100 AS val
INTO #a
UNION
SELECT 1, 2, 50
UNION
SELECT 1, 3, 75
UNION
SELECT 2, 2, 120
UNION
SELECT 2, 4, 22
UNION
SELECT 2, 1, 45
ПРИМЕЧАНИЕ # 1: id
уникально в groupid
NOTE # 2: val
может иметь одинаковые значенияпоэтому в этом случае столбец id
будет первым идентификатором, соответствующим val
Предположим, я хочу, чтобы результат выглядел следующим образом:
groupid | min_id | min_val | max_id | max_val
1 2 50 1 100
2 3 22 2 120