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

SQL查询如何将同订单行关联的PNP、HAN费用合并为单行输出

解决方案

实现逻辑

  • 当前查询返回多行的核心原因是OOLICH表中该订单行匹配到了PNP、HAN两条费用记录,原有CASE判断逻辑会为每条费用生成独立行
  • 合并为单行只需要按所有公共字段分组,对费用类字段做聚合运算即可:由于原有CASE逻辑中不符合费用类型的取值为0,使用SUM()聚合后刚好可以得到对应费用的实际值

修改后SQL语句

SELECT
OBORNO,
OBPONR,
OBITNO,
OBHDPR,
OBSAPR,
SUM(CASE WHEN O7CRID = 'PNP' THEN OBORQA * O7CRAM ELSE 0 END) AS PNP_CHARGE_AMT,
SUM(CASE WHEN O7CRID = 'HAN' THEN OBORQA * O7CRAM ELSE 0 END) AS HAN_CHARGE_AMT,
SUM(CASE WHEN O7CRID = 'PNP' THEN (OBORQA * O7CRAM) + OBSAPR ELSE 0 END) AS FINAL_SLS_PRC
FROM [MVXJDTA].[OOLINE]
LEFT JOIN [MVXJDTA].[OOLICH] 
ON O7CONO = OBCONO
AND O7ORNO = OBORNO
AND O7PONR = OBPONR
WHERE OBCONO = '610' 
AND OBORNO = '2000000096'
GROUP BY OBORNO, OBPONR, OBITNO, OBHDPR, OBSAPR

补充说明

如果实际场景中同一个费用类型可能有多条记录,SUM聚合也可以自动叠加总费用,不需要额外调整逻辑。如果确认每个类型只有一条记录,用MAX()替换SUM()也可以得到相同结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:45:10