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

如何在单条SQL查询中分别生成两个不同日期的SUM求和值列

双日期SQL查询合并方案

你可以使用条件聚合的方式实现需求,仅需一次表扫描即可得到两列不同日期的求和结果,性能优于两次查询后再关联的方案。

注:原两条SQL中的group by s.存在语法遗漏,已修正为group by s.id。

合并后的SQL如下:

SELECT 
  s.id,
  -- 处理10/25/21的求和结果,空值转为NA
  COALESCE(CAST(SUM(CASE WHEN s.date = '10/25/21' THEN h.val END) AS VARCHAR), 'NA') AS `VAL_1025`,
  -- 处理10/26/21的求和结果,空值转为NA
  COALESCE(CAST(SUM(CASE WHEN s.date = '10/26/21' THEN h.val END) AS VARCHAR), 'NA') AS `VAL_1026`
FROM identity s 
INNER JOIN price_net h 
  ON s.date = h.date 
  AND s.num_id = h.num_id 
  AND s.rec_type = h.rec_type
WHERE 
  s.date IN ('10/25/21', '10/26/21')
  AND s.rec_type = 'D'
  AND s.tier = 'P'
GROUP BY s.id

适配说明:

  • 如果你使用MySQL数据库,可将COALESCE替换为IFNULL,执行效果完全一致
  • 若业务允许无数据时返回0而非NA,可删掉CAST转换和COALESCE逻辑,给CASE语句补充ELSE 0即可
  • 若需要包含两个日期都无匹配数据的id,可将INNER JOIN改为LEFT JOIN,并将rec_type、tier的筛选条件移到JOIN关联条件中

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

相关产品推荐
方舟 Agent Plan

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

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