You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle层级结构查询求助:实现DNO仅单次显示的分层输出

Oracle层级展示:同部门DNO仅首行显示的实现

要实现同DNO仅首行显示、后续行DNO为空的分层效果,可借助Oracle的**窗口函数ROW_NUMBER()**来实现,具体方案如下:

核心逻辑

  1. 用ROW_NUMBER()按DNO分区排序,给每个部门内的记录分配独立行号
  2. 根据行号判断:行号为1时显示原DNO值,否则显示NULL

完整查询语句

SELECT
    CASE WHEN rn = 1 THEN DNO ELSE NULL END AS DNO,
    ENAME,
    SAL
FROM (
    SELECT
        DNO,
        ENAME,
        SAL,
        ROW_NUMBER() OVER (PARTITION BY DNO ORDER BY ENAME) AS rn
    FROM EMP
)
ORDER BY DNO, rn;

预期输出结果

DNOENAMESAL
101John3000
Michael2500
Scott4000
102James3500
Smith1500
Williams2000
103Andrew1000
Becker4500

补充说明

  • PARTITION BY DNO会将数据按部门分组,每个组内单独计算行号
  • ORDER BY ENAME用于指定部门内记录的排序规则,可根据需求替换为SAL或其他字段
  • 外层ORDER BY DNO, rn保证结果按部门和行号顺序输出,维持分层结构

内容的提问来源于stack exchange,提问作者Rupa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 17:34:52