如何关联计算汇总数据与区域月份表并过滤指定区域?
数据表关联实现方案
核心思路
用**左连接(LEFT JOIN)**关联两张表,保留区域月份全量表中所有非Denver区域的记录,同时匹配汇总表中对应区域、月份的数值;未匹配到的记录,数值字段留空。最后按区域、月份排序,和目标结果集顺序一致。
表结构与字段命名约定
为方便操作,给两张表及字段定义如下名称:
- 区域月份全量表:命名为
region_months,字段为code(第一列数字)、region(区域名称)、month(月份) - 汇总数据表:命名为
summary_data,字段为code、region、month、summary_value(汇总数值)
SQL 实现代码
SELECT rm.code, rm.region, rm.month, sd.summary_value FROM region_months rm LEFT JOIN summary_data sd ON rm.code = sd.code AND rm.region = sd.region AND rm.month = sd.month WHERE rm.region != 'Denver' ORDER BY rm.region DESC, rm.month ASC;
代码说明
- LEFT JOIN:确保
region_months中所有符合过滤条件的记录都被保留,即使在summary_data中没有匹配项,此时summary_value会显示为NULL(对应结果集中的空值) - 关联条件:通过
code、region、month三个字段精准匹配,保证只有同一区域、同一月份的记录才会关联上汇总数值 - WHERE 过滤:直接排除
Denver区域的所有记录 - ORDER BY:按区域降序、月份升序排列,和目标结果集的顺序完全匹配
内容的提问来源于stack exchange,提问作者Eugen Konkov
相关产品推荐
相关产品推荐

