我有一个数据表是这样的
表A
ID 标识 起始时间 结止时间
1 A 2013-7-2 2013-7-18
2 B 2013-7-19 2013-7-25
3 C 2013-7-30 2013-8-15
。。。。。。。。。。。。。。。。。。
要查询出来的结果是
时间排期
2日 3日 4日 5日.....18日 19日......25日 26日 27日 28日 29日 30日 31日.....
有 有 有 有 ..... 有 有 ...... 有 有 有 ....
请问这样的sql要怎么写
SQL
------解决方案--------------------
with tb(id,标识,起始时间,截至时间)as(
select 1,'a','2013-7-02','2013-7-18' union
select 2,'B','2013-7-19','2013-7-25' union
select 3,'C','2013-7-30','2013-8-15'
),tc as(
select a=DATEADD(day,number,起始时间) from tb,master..spt_values
where type='p' and DATEADD(day,number,起始时间)<=截至时间
),td as(
select distinct a=dateadd(day,number,(select MIN(起始时间) from tb)) from tb,master..spt_values
where type='p'
and dateadd(day,number,(select MIN(起始时间) from tb))<=(select max(截至时间)from tb)
)
select td.a 日期,case when tc.a IS null then '' else '有' end 标识
from td left join tc on td.a=tc.a
order by 1
写了一个,比较乱..
------解决方案--------------------
create table Test_123
(
id int ,
表示 char(1),
起始时间 date,
截止时间 date
)
insert into Test_123 values (1,'A', '2013-7-2',' 2013-7-18' )