SQL查询如何分配日期

来源:百度知道 编辑:UC知道 时间:2024/06/24 16:45:52
就好像我有A表的有记录a1,a2,现在我想将2009-11-21到2009-11-23,这3天的日期分配给每个a。
前提是这日期不是在A表里面的,就好像查出来的结果有
a date
----------
a1 2009-11-21
a1 2009-11-22
a1 2009-11-23
a2 2009-11-21
a2 2009-11-22
a2 2009-11-23

又如时间段2009-09-01到2009-09-02
a date
----------
a1 2009-09-01
a1 2009-09-02
a2 2009-09-01
a2 2009-09-02

没看明白~

用cross join就好。
如果时间值个数少的话,可以用union all,如下
select *
from a,
(select '2009-11-21' as [date]
union all
select '2009-11-22' as [date]
union all
select '2009-11-23' as [date] ) b
如果多的话,建个临时表,用循环语句往里填日期然后再交叉查询即可。

select 'a1' a
into #a
union
select 'a2'

declare @dtStart datetime
declare @dtEnd datetime
set @dtStart = '2009/11/21'
set @dtEnd ='2009/11/23'

create table #t
(
dt datetime
)

while @dtStart<=@dtEnd
begin
insert into #t values(@dtStart)
set @dtStart=dateadd(d,1,@dtStart)
end

select A.a,t.dt from
#a A
cross join
#t T

希望能帮到你