【发布时间】:2012-02-02 13:24:19
【问题描述】:
我正在尝试在 Oracle 中进行“行融合”,即我想要一个返回行的查询,并且这些行中的每一行对于每一列都有最初存储在其他行中的值。
例如(我关注documentation),假设我有一个员工表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 子句。
【问题讨论】:
标签: sql oracle group-by grouping analytic-functions