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

SQL如何基于现有列的不同值拆分生成独立结果列

实现方案

这是典型的行转列需求,直接用条件判断即可实现,对应两种常见业务场景的SQL写法如下:


场景1:保留原查询逐行返回粒度,仅拆分类型为独立列

不需要合并记录,只是把原查询里的Request类型值拆成两个独立金额列,当前行匹配对应类型时列显示金额,不匹配则列值为0,直接用CASE WHEN做逐行判断即可:

SELECT 
  UpdateDate AS DATE,
  Username,
  CASE WHEN Request = 'Successfull' THEN AmountUSD ELSE 0 END AS SuccessfullAmount,
  CASE WHEN Request = 'Declined' THEN AmountUSD ELSE 0 END AS DeclinedAmount
FROM tgm.tr_active 
WHERE Request IN ('Successfull','Declined');

场景2:同日期、同用户的记录合并为一行,两类金额分开展示

如果需要把同一个UpdateDate、同一个Username下的成功、拒绝交易汇总到同一行,在条件判断的基础上搭配聚合函数,按非金额字段分组即可:

SELECT 
  UpdateDate AS DATE,
  Username,
  SUM(CASE WHEN Request = 'Successfull' THEN AmountUSD ELSE 0 END) AS SuccessfullAmount,
  SUM(CASE WHEN Request = 'Declined' THEN AmountUSD ELSE 0 END) AS DeclinedAmount
FROM tgm.tr_active 
WHERE Request IN ('Successfull','Declined')
GROUP BY UpdateDate, Username;

注意事项

  • 写判断条件时,'Successfull'的拼写要和表中实际存储的枚举值完全一致,不要自行修正为常规正确拼写Successful,否则会出现匹配不到数据的问题。
  • 聚合函数可以根据实际业务需求替换:如果不需要求和,也可以换成MAX()/MIN()取对应类型的最大/最小金额值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:48:28