Я пытаюсь сделать "слияние строк" в Oracle, т.е. я хочу иметь запрос, который возвращает строки, и каждая из этих строк имеет, для каждого столбца, значения, которые первоначально хранились в других строках.
Например (я следую документации), допустим, у меня есть таблица сотрудников EMP
, хранящая номер сотрудника, номер его отдела и его зарплату
Как мне создать запрос, который возвращает столько строк, сколько отделов, и который возвращает также максимальную зарплату в этом отделе?
Мне нужно что-то вроде этого:
EMPNO DEPTNO SAL MAX_VAL_IN_DEPT
---------- ---------- ---------- -----------------
7934 10 1300 1300
7369 20 800 800
7900 30 950 950
SELECT empno
, deptno
, sal
, FIRST_VALUE(sal IGNORE NULLS) OVER (PARTITION BY deptno ORDER BY sal ASC NULLS LAST) AS first_val_in_dept
FROM emp;
самый близкий, но мне понадобится дополнительный GROUP BY
deptno clause, который я не могу добавить.