我正在尝试在 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 子句。