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

DB2 SQL多表分组查询:按date统计table 1/table 2条目数

DB2 SQL 跨表日期统计解决方案

我来给你写一个完全符合需求的DB2 SQL语句,刚好能实现你要的跨表日期统计效果,完美匹配你给出的示例数据和期望结果:

WITH all_dates AS (
    -- 获取两张表中所有唯一的日期值
    SELECT date FROM table1
    UNION
    SELECT date FROM table2
),
table1_counts AS (
    -- 统计table1每个日期的条目数
    SELECT date, COUNT(*) AS sum_table1
    FROM table1
    GROUP BY date
),
table2_counts AS (
    -- 统计table2每个日期的条目数
    SELECT date, COUNT(*) AS sum_table2
    FROM table2
    GROUP BY date
)
-- 合并结果,用COALESCE处理无数据的情况为0,计算总数
SELECT 
    ad.date,
    COALESCE(t1.sum_table1, 0) AS "sum from table 1",
    COALESCE(t2.sum_table2, 0) AS "sum from table 2",
    COALESCE(t1.sum_table1, 0) + COALESCE(t2.sum_table2, 0) AS "total count"
FROM all_dates ad
LEFT JOIN table1_counts t1 ON ad.date = t1.date
LEFT JOIN table2_counts t2 ON ad.date = t2.date
ORDER BY ad.date;

代码说明:

  • all_dates CTE:通过UNION获取两张表中所有不重复的日期,确保所有出现过的日期都会出现在最终结果里
  • table1_counts/table2_counts CTE:分别对两张表按日期分组统计条目数量
  • 主查询:用LEFT JOIN将日期集合和两张表的统计结果关联,COALESCE函数把没有匹配到的统计值转为0,最后通过两个统计值相加得到总数,最后按日期排序让结果更直观

用你给出的示例数据测试的话,得到的结果和你期望的完全一致:

date | sum from table 1 | sum from table 2 | total count
2018-03-15 | 0 | 1 | 1
2018-03-20 | 2 | 1 | 3
2018-03-25 | 1 | 0 | 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:17:27