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

如何合并SQL查询中因terminalnumber分组产生的重复支付类型结果?

解决方案

要合并同一支付类型的重复行,你需要把终端判断逻辑嵌套在聚合函数内部,同时去掉GROUP BY里的terminalnumber,这样就能按门店和支付类型汇总数据了:

修改后的SQL语句:

SELECT
    storenumber,
    bbbtendertypetext,
    -- 只汇总终端号>91的数值
    SUM(CASE WHEN terminalnumber > 91 THEN financialamounttendered - financialchangeamount END) AS sco_net_value,
    -- 只汇总终端号<91的数值
    SUM(CASE WHEN terminalnumber < 91 THEN financialamounttendered - financialchangeamount END) AS front_end_net_value,
    -- 统计所有终端的交易总数
    COUNT(transactionid) AS transaction_count
FROM
    AceTLogData.Tlog.tender
WHERE
    transactiondatetime > '2022-09-21 00:00:00.000'
    AND transactiondatetime < '2022-09-22 00:03:00.000'
GROUP BY
    storenumber,
    bbbtendertypetext -- 移除terminalnumber,按门店+支付类型分组
ORDER BY
    storenumber;

关键变化说明:

  • 把CASE从聚合函数外移到内部:原来的写法是先按终端分组再判断,现在是先筛选符合条件的终端行,再对这些行做聚合计算,这样就能在同一支付类型下汇总不同终端的数值。
  • 移除GROUP BY中的terminalnumber:同一门店、同一支付类型的所有终端数据会合并成一行,不会再出现重复的Visa/礼品卡行。
  • transaction_count直接统计所有交易ID,自动汇总该支付类型下所有终端的交易数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:20:41