使用SQL语句按天统计数据,无数据也需空值记录

假设:人员表,考勤表。

为每个人员生成考勤结果,每天一条记录,无论人员在表中有没有考勤数据,都有一条统计结果。

这样需要为每个人员创建包日期的虚拟临时表。

借用master中的表spt_values中的type='p'的记录;

测试SQL语句如下:

--初始日期: 2020-1-1
--天数: 7,即从0到7,共8天

select tab1.vn,tab21.date1
from (
    select '张三' vn
    union all
    select '张四' vn
    ) tab1
inner join (
    select tab2.date1
    from (
	    SELECT 
	      CONVERT(NVARCHAR(10), DateAdd(day, number, '2020-1-1'),120) AS date1  
	    FROM 
	      master..spt_values
	    WHERE type = 'p' AND number <= 7
    ) tab2 ) tab21 on 1=1
    order by tab1.vn,tab21.date1

执行结果:

张三    2020-01-01
张三    2020-01-02
张三    2020-01-03
张三    2020-01-04
张三    2020-01-05
张三    2020-01-06
张三    2020-01-07
张三    2020-01-08
张四    2020-01-01
张四    2020-01-02
张四    2020-01-03
张四    2020-01-04
张四    2020-01-05
张四    2020-01-06
张四    2020-01-07
张四    2020-01-08

再将此结果,关联到统计结果即可。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值