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

SQL关联表查询:生成含NULL值的全量站点每日出勤统计数据

解决方案

要实现每个站点覆盖6个月所有日期、缺失出勤时显示NULL的需求,核心是先构建站点+日期的全量笛卡尔积,再通过左连接关联出勤数据,具体SQL语句如下:

-- 1. 获取所有唯一站点,与日期表交叉连接生成全量站点-日期组合
-- 2. 左连接出勤表,匹配对应站点和日期的出勤数据
SELECT 
    s.SiteName,
    d.Date,
    sd.Count AS AttendanceCount
FROM (SELECT DISTINCT SiteName FROM #SiteData) s
CROSS JOIN #Data d
LEFT JOIN #SiteData sd 
    ON s.SiteName = sd.SiteName 
    AND d.Date = sd.Date
ORDER BY s.SiteName, d.Date;

关键逻辑说明

  • CROSS JOIN:通过唯一站点列表和日期表的交叉连接,生成每个站点对应6个月中每一天的基础记录,确保不会遗漏任何日期与站点的组合。
  • LEFT JOIN:以全量组合为基础左连接出勤表,即使某站点某天无出勤数据,也会保留这条记录,且AttendanceCount字段自动填充为NULL。
  • DISTINCT SiteName:避免#SiteData中存在重复站点时,交叉连接生成冗余记录。

如果你的临时表字段名与示例不符(比如站点字段不是SiteName、日期字段不是Date),自行替换为实际字段名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:34:59