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

SQL日期范围查询分组名称显示NULL,需修正匹配预期结果

问题:获取指定日期范围内包含所有分组的完整记录

原始数据表

日期分组名称员工
2024-11-01Group AJohn
2024-11-01Group ARachel
2024-11-01Group BMary
2024-11-02Group AJohn
2024-11-03Group ARachel
2024-11-03Group BMary
2024-11-05Group AJohn
2024-11-05Group BMary

原查询语句

with scheduler as (
  select convert(datetime, '2024-11-05 00:00:00', 120) as 'dt' -- end date
  union all
  select  dateadd(DAY, -1, dt) from scheduler 
  where dateadd(dd, -1, dt) >= convert(datetime, '2024-11-01 00:00:00', 120) -- start date
)
select convert(date, a.dt) as 'date', b.group_name, b.employee 
from scheduler a
left join tbl_a b
order by a.dt, b.group_name;

当前查询结果

日期分组名称员工
2024-11-01Group AJohn
2024-11-01Group ARachel
2024-11-01Group BMary
2024-11-02Group AJohn
2024-11-03Group ARachel
2024-11-03Group BMary
2024-11-04NULLNULL
2024-11-05Group AJohn
2024-11-05Group BMary

期望结果

日期分组名称员工
2024-11-01Group AJohn
2024-11-01Group ARachel
2024-11-01Group BMary
2024-11-02Group AJohn
2024-11-02Group BNULL
2024-11-03Group ARachel
2024-11-03Group BMary
2024-11-04Group ANULL
2024-11-04Group BNULL
2024-11-05Group AJohn
2024-11-05Group BMary

修正后的查询语句

with scheduler as (
  select convert(datetime, '2024-11-05 00:00:00', 120) as 'dt' -- end date
  union all
  select dateadd(DAY, -1, dt) from scheduler 
  where dateadd(dd, -1, dt) >= convert(datetime, '2024-11-01 00:00:00', 120) -- start date
),
groups as (
  select distinct group_name from tbl_a -- 获取所有唯一分组
)
select 
  convert(date, s.dt) as 'date',
  g.group_name,
  t.employee
from scheduler s
cross join groups g -- 生成日期与分组的全组合
left join tbl_a t 
  on convert(date, s.dt) = t.日期 
  and g.group_name = t.group_name -- 按日期+分组匹配原表数据
order by s.dt, g.group_name;

关键调整说明

  1. 新增groups公共表表达式,提取所有唯一分组,确保不会遗漏任何分组信息
  2. 使用cross join生成日期范围与所有分组的笛卡尔积,保证每个日期下每个分组都有一行记录
  3. 左连接原表时同时匹配日期和分组字段,精准关联对应数据,无匹配数据时员工字段自动显示NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:50:04