"слияние строк" в oracle

Я пытаюсь сделать "слияние строк" в 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, который я не могу добавить.

0
задан marc_s 15 November 2012 в 12:11
поделиться