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

SQL查询如何按ORDER_NUMBER聚合获取两个STATUS对应的日期列

问题原因

你当前编写的SQL没有对订单号做聚合操作,原表中每个订单对应多条状态记录,查询结果会逐行输出原表的所有记录,自然会出现大量重复订单号,每个订单的非对应状态行的日期字段都会返回null。

解决方案

只需要在原有逻辑基础上,按ORDER_NUMBER字段分组,对两个CASE WHEN返回的结果使用MAX聚合函数即可。聚合函数会自动忽略NULL值,最终每个订单只会返回一行结果,刚好匹配预期。

修改后SQL语句

SELECT 
    ORDER_NUMBER,
    MAX(CASE WHEN STATUS = 'approve' THEN DATE END) AS APPROVE_DATE,
    MAX(CASE WHEN STATUS = 'cancel' THEN DATE END) AS CANCEL_DATE
FROM 
    `TABLE`
GROUP BY 
    ORDER_NUMBER
补充说明

如果同一个订单存在多条同状态的记录(比如多次取消/多次审批),MAX会返回最新的对应日期,如果需要取最早的日期,把MAX替换为MIN即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:45:05