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

如何在SQL查询中基于单列合并行?现有脚本问题求助

解决方案

要实现将同一Case ID的两行合并为一行,你需要结合GROUP BY分组和聚合函数(如MAX())来处理CASE表达式的结果,修正后的SQL如下:

SELECT
    O.ISSUE_ID "Case ID",
    MAX(CASE WHEN O.ORDER_TYPE = 'SHIPPED_ORDER' THEN O.ORDER_ID END) AS SHIPPED_ORDER,
    MAX(CASE WHEN O.ORDER_TYPE = 'RETURN_ORDER' THEN O.ORDER_ID END) AS RETURN_ORDER
FROM 
  TB.ORDER O 
WHERE
  O.CREATED_DATE > '01-Jul-20'
  AND O.ORDER_TYPE IN ('SHIPPED_ORDER','RETURN_ORDER')
GROUP BY O.ISSUE_ID

原查询的问题

你之前的CASE表达式只是为每行生成了对应订单类型的列值,但没有将同一Case ID的行合并。同一Case ID下的两行分别对应SHIPPED和RETURN的非空值,需要通过分组聚合来把这些值整合到同一行中。

关键说明

  • GROUP BY O.ISSUE_ID:将所有相同Case ID的记录归为一组,确保每个Case ID只输出一行结果
  • MAX():在每组中提取CASE表达式生成的非空值(空值会被聚合函数忽略),从而将SHIPPED和RETURN的订单ID合并到同一行
  • 移除了原查询中的O.ORDER_TYPE列:该列会破坏分组逻辑,导致无法合并行

执行上述查询后,你将得到期望的结果:

Case IDSHIPPED_ORDERRETURN_ORDER
CASE 1Shipped Order AAAReturned Order AAB
CASE 2Shipped Order CCCReturned Order CCD

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:42:41