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

如何在Access交叉表(Crosstab)查询中包含计数为零的时段

可以实现,核心逻辑是先构造覆盖所有日期+24小时的基准行集合,再左关联就诊业务数据做统计,无匹配的时段统计值自动为0,具体操作如下:

步骤1:准备24小时参考序列

你可以二选一:

  • 方案1:新建辅助表HourLookup,仅含整型字段HourOD,依次存入0~23共24条记录,复用性更高
  • 方案2:用联合查询临时生成24小时序列,无需建表:
SELECT 0 AS HourOD UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
UNION SELECT 10 UNION SELECT 11 UNION SELECT 12 UNION SELECT 13 UNION SELECT 14
UNION SELECT 15 UNION SELECT 16 UNION SELECT 17 UNION SELECT 18 UNION SELECT 19
UNION SELECT 20 UNION SELECT 21 UNION SELECT 22 UNION SELECT 23

步骤2:修改交叉表查询

以下是调整后的完整查询语句(默认使用方案1的HourLookup辅助表,替换为方案2的联合查询也可运行):

TRANSFORM Nz(Count([ServiceEncounterID]),0) AS CountOfServiceEncounterID
SELECT t.DOY, t.HourOD
FROM 
  -- 全量日期+24小时的基准组合
  (
    SELECT DISTINCT DateValue([EDRegistrationDtm]) AS DOY, HourLookup.HourOD
    FROM HisDataModel, HourLookup
  ) AS t
-- 左关联业务表,无就诊记录的时段对应字段为NULL
LEFT JOIN HisDataModel AS HisDataModel_1
  ON DateValue(HisDataModel_1.[EDRegistrationDtm]) = t.DOY 
  AND HisDataModel_1.HourOD = t.HourOD
GROUP BY t.DOY, t.HourOD
ORDER BY t.DOY, t.HourOD
PIVOT HisDataModel_1.Stream;

修改后查询会自动补全所有日期对应的24小时行,无就诊记录的时段各Stream分类的统计值均为0。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:54:04