У меня есть такая таблица:
ID | Val | Quantity
----------------------
1 | A | 11
1 | B | 15
1 | B | 19
1 | Z | 45
2 | D | 4
2 | E | 25
2 | F | 13
2 | Y | 2
3 | G | 10
3 | H | 15
3 | I | 19
Я хочу выбрать верхнюю запись для каждого идентификатора, упорядоченного по VAL, Количество И добавить следующие 2 значения Val / Количество в сортировке в виде столбцов для этой строки , Мой ожидаемый результат выглядит следующим образом:
ID | Val | Quantity | VAL2 | Quantity2 | VAL3 | Quantity3
-------------------------------------------------------------------
1 | A | 11 | B | 15 | B | 19
2 | B | 15 | D | 4 | E | 25
3 | C | 19 | G | 10 | H | 15
Я почти сделал это, используя свинец, но я не знаю, как избавиться от остальных записей в моем наборе данных, так как я только хочу верх.
SELECT ID,
VAL,
Quantity,
lead(VAL,1) over (order by VAL, Quantity ASC) as Val2,
lead(Quantity,1) over (order by VAL, Quantity ASC) as Quantity2,
lead(VAL,2) over (order by VAL, Quantity ASC) as Val3,
lead(Quantity,2) over (order by VAL, Quantity ASC) as Quantity3,
FROM MY_TABLE
order by VAL, Quantity ASC
Как я могу выбрать только верхнюю запись для каждого идентификатора, сохраняя ведущие записи? Или есть более элегантный / эффективный способ сделать это?