如何在Oracle中使用Pivoting表示请求提交与审批数据?
解决方案
针对你的需求,不用纠结Pivot功能,用条件聚合就能实现目标效果,核心思路是按请求编号分组,通过条件判断提取对应状态的日期:
示例SQL代码(适配常见SQL引擎)
SELECT 请求编号, MAX(CASE WHEN 状态 = '提交' THEN 日期 END) AS 提交日期, MAX(CASE WHEN 状态 = '审批通过' THEN 日期 END) AS 最终审批日期, MAX(CASE WHEN 状态 = '驳回' THEN 日期 END) AS 驳回日期 FROM 你的数据集表名 GROUP BY 请求编号
关键说明
- 用
MAX()是因为同请求同状态的日期一般唯一,聚合后不会改变结果;如果同状态存在多个日期,可根据需求替换成MIN()或其他逻辑(比如取最新日期) - 这种写法相当于手动实现了Pivot的列转行效果,避开了Pivot必须配合聚合函数的限制,同时更灵活适配你的场景
内容的提问来源于stack exchange,提问作者AMDev
相关产品推荐
相关产品推荐

