[馨郁星愿]问个问题:请看
比如我有个表 HotelPrice,里面有几个字段:
客房编号 开始日期 截止日期 价格
1000 2007-9-1 2007-9-30 500
1000 2007-10-1 2007-10-30 800
这样同属于一个房间,如果客人进行时间查询的时候,查询的日期为:
从 2007-9-29 到2007-10-3 日 怎么把这价格列出来??
就是怎么突破这个跨月查询?
------解决方案--------------------数据只有月份的数据,如何查日的数据,难道将价格平均再乘以天数么
------解决方案--------------------[馨郁星愿]--这个名字好.
create table tb (客房编号 int,开始日期 datetime,截止日期 datetime,价格 int)
insert into tb values(1000, '2007-9-1 ' , '2007-9-30 ' , 500)
insert into tb values(1000, '2007-10-1 ', '2007-10-30 ', 800)
go
select top 1000 id = identity(int,0,1) into tmp from syscolumns,sysobjects
select * from
(
select 客房编号,价格,dateadd(day,b.id,a.开始日期) 日期 from tb a, tmp b
where dateadd(day,b.id,a.开始日期) <= a.截止日期
) t
where 日期 > = '2007-9-29 ' and 日期 <= '2007-10-3 '
drop table tb,tmp
/*
客房编号 价格 日期
----------- ----------- -----------------------
1000 500 2007-09-29 00:00:00.000
1000 500 2007-09-30 00:00:00.000
1000 800 2007-10-01 00:00:00.000
1000 800 2007-10-02 00:00:00.000
1000 800 2007-10-03 00:00:00.000
(所影响的行数为 5 行)
*/