一个日期循环问题,急求啊
我的表数据如下:
就業 遅刻 合計 残業
2011/06 26日(0) 0日(0)
2011/07 24日(0) 0日(0)
2011/08 15日(0) 0日(0)
2011/11 26日(0) 0日(0)
2011/12 5日(0) 0日(0)
2012/01 25日(0) 0日(0)
2012/02 22日(0) 0日(0)
2012/03 23日(0) 0日(0)
但是有的月份没有数据,需要显示成这样的
就業 遅刻 合計 残業
2011/06 26日(0) 0日(0)
2011/07 24日(0) 0日(0)
2011/08 15日(0) 0日(0)
2011/09 0日(0) 0日(0)
2011/10 0日(0) 0日(0)
2011/11 26日(0) 0日(0)
2011/12 5日(0) 0日(0)
2012/01 25日(0) 0日(0)
2012/02 22日(0) 0日(0)
2012/03 23日(0) 0日(0)
2012/04 0日(0) 0日(0)
2012/05 0日(0) 0日(0)
合計 116日(0) 0日(0)
就是无论月份是否有数据都显示出来,但怎么去查询啊
就業 遅刻 合計 残業
2011/06 26日(0) 0日(0)
2011/07 24日(0) 0日(0)
2011/08 15日(0) 0日(0)
2011/11 26日(0) 0日(0)
2011/12 5日(0) 0日(0)
2012/01 25日(0) 0日(0)
2012/02 22日(0) 0日(0)
2012/03 23日(0) 0日(0)
但是有的月份没有数据,需要显示成这样的
就業 遅刻 合計 残業
2011/06 26日(0) 0日(0)
2011/07 24日(0) 0日(0)
2011/08 15日(0) 0日(0)
2011/09 0日(0) 0日(0)
2011/10 0日(0) 0日(0)
2011/11 26日(0) 0日(0)
2011/12 5日(0) 0日(0)
2012/01 25日(0) 0日(0)
2012/02 22日(0) 0日(0)
2012/03 23日(0) 0日(0)
2012/04 0日(0) 0日(0)
2012/05 0日(0) 0日(0)
合計 116日(0) 0日(0)
就是无论月份是否有数据都显示出来,但怎么去查询啊
作者: War3_Fan 发布时间: 2011-06-10
先生成一个时间表,然后左联。
作者: maco_wang 发布时间: 2011-06-10
SQL code
create table tb(就業 varchar(7),遅刻 nvarchar(10)) insert into tb select '2011/06','26日' insert into tb select '2011/07','24日' insert into tb select '2011/08','15日' insert into tb select '2011/11','26日' insert into tb select '2011/12','5日' insert into tb select '2012/01','25日' insert into tb select '2012/02','22日' insert into tb select '2012/03','23日' go select * from tb union all select * from( select convert(varchar(7),dateadd(m,number,'2011/06/01'),111)dt,'0日' cd from master..spt_values where type='p' and number<12 )t where not exists(select 1 from tb where 就業=t.dt) order by 就業 go drop table tb /* 就業 遅刻 ------- ---------- 2011/06 26日 2011/07 24日 2011/08 15日 2011/09 0日 2011/10 0日 2011/11 26日 2011/12 5日 2012/01 25日 2012/02 22日 2012/03 23日 2012/04 0日 2012/05 0日 (12 行受影响) */
作者: qianjin036a 发布时间: 2011-06-10
SQL code
要先生成一张 日期填充表,然后 left join
作者: abcjun188 发布时间: 2011-06-10
引用 2 楼 qianjin036a 的回复:
SQL code
create table tb(就業 varchar(7),遅刻 nvarchar(10))
insert into tb select '2011/06','26日'
insert into tb select '2011/07','24日'
insert into tb select '2011/08','15日'
insert into tb select '2……
SQL code
create table tb(就業 varchar(7),遅刻 nvarchar(10))
insert into tb select '2011/06','26日'
insert into tb select '2011/07','24日'
insert into tb select '2011/08','15日'
insert into tb select '2……
select convert(varchar(7),dateadd(m,number,'2011/06/01'),111)dt,'0日' cd from master..spt_values where type='p' and number<12
这段话是从哪里来的啊
作者: War3_Fan 发布时间: 2011-06-10
最后一行“合计”,你用union将合计前的数据和合计这样连起来
作者: cosmo_sei 发布时间: 2011-06-10
引用 4 楼 war3_fan 的回复:
引用 2 楼 qianjin036a 的回复:
SQL code
create table tb(就業 varchar(7),遅刻 nvarchar(10))
insert into tb select '2011/06','26日'
insert into tb select '2011/07','24日'
insert into tb select '2011/08','15日'
……
引用 2 楼 qianjin036a 的回复:
SQL code
create table tb(就業 varchar(7),遅刻 nvarchar(10))
insert into tb select '2011/06','26日'
insert into tb select '2011/07','24日'
insert into tb select '2011/08','15日'
……
master..spt_values 是一个系统视图,可以从其中引用自然数序列.
作者: qianjin036a 发布时间: 2011-06-10