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

如何在Oracle SQL中将缺失属性分组至单列?附示例表与预期结果

嘿,这需求我熟!咱们可以用Oracle的LISTAGG字符串拼接函数结合UNION ALL来实现,完美匹配你要的输出格式。

Oracle SQL:汇总缺失属性的员工ID

首先先明确你的源表结构和数据:

empidnamedeptph_no
123nullnullnull
124mikesciencenull
125nullphysics789
126nullnull463
127johnnullnull

实现代码

直接上可以运行的SQL:

SELECT 
    LISTAGG(empid, ', ') WITHIN GROUP (ORDER BY empid) || ' 缺失name' AS status
FROM emp
WHERE name IS NULL
UNION ALL
SELECT 
    LISTAGG(empid, ', ') WITHIN GROUP (ORDER BY empid) || ' 缺失dept' AS status
FROM emp
WHERE dept IS NULL
UNION ALL
SELECT 
    LISTAGG(empid, ', ') WITHIN GROUP (ORDER BY empid) || ' 缺失ph_no' AS status
FROM emp
WHERE ph_no IS NULL;

代码逻辑说明

  • 分三个独立查询分别处理name、dept、ph_no三个字段的缺失情况:每个查询先筛选出对应字段为NULL的员工记录。
  • LISTAGG(empid, ', ') WITHIN GROUP (ORDER BY empid):这个函数的作用是把符合条件的员工ID按从小到大的顺序拼接成逗号加空格分隔的字符串,和你示例里的格式完全对齐。
  • 最后拼接上固定文本“ 缺失XX”,生成你需要的status列内容。
  • 用UNION ALL把三个查询的结果合并,得到最终的三行汇总结果。

运行结果

执行后会得到和你预期完全一致的输出:

status
------------
123, 125, 126 缺失name
123, 126, 127 缺失dept
123, 124, 127 缺失ph_no

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:58:32