日期:2014-05-17  浏览次数:20692 次

一个查询会议室最近几天状态的语句 求大神

这是大致的表结构 需要的是做出这样的显示效果


求大神 求版主啊 小弟在线等助攻!!!

------解决方案--------------------
看看这样可以不:

select *,
(case when(convert(datetime,[会议时间]+' '+[会议室开始时间],121)<=GETDATE() and convert(datetime,[会议时间]+' '+[会议室结束时间],121)>GETDATE()) then '使用'
else '空闲'  end ) [状态] From #TH

--结果

编号 会议时间 会议室编号 会议室名称 会议室开始时间 会议室结束时间 状态
1 2013-12-23 1 第一会议室 13:00 15:00 空闲
2 2013-12-26 2 第二会议室 9:00 10:00 空闲
3 2013-12-28 3 第三会议室 9:00 11:00 空闲
4 2013-12-29 4 第四会议室 9:00 11:00 空闲
5 2013-12-30 5 第五会议室 9:00 11:00 空闲
6 2013-12-30 6 第六会议室 16:00 20:00 使用

------解决方案--------------------
补充下语句:



--创建会议记录表
create table #TH(
[编号] int null,
[会议时间] varchar(10) null,
[会议室编号] int null,
[会议室名称] varchar(50) null,
[会议室开始时间] varchar(20) null,
[会议室结束时间] varchar(20) null
)

insert into #TH
select 1,'2013-12-23',1,'第一会议室','13:00','15:00' union
select 2,'2013-12-26',2,'第二会议室','9:00','10:00' union
select 3,'2013-12-28',3,'第三会议室','9:00','11:00' union
select 4,'2013-12-29',4,'第四会议室','9:00','11:00' union
select 5,'2013-12-30',5,'第五会议室','9:00','11:00' union
select 6,'2013-12-30',6,'第六会议室','16:00','20:00' --测试用


select *,
(case when(convert(datetime,[会议时间]+' '+[会议室开始时间],121)<=GETDATE() and convert(datetime,[会议时间]+' '+[会议室结束时间],121)>GETDATE()) then '使用'
else '空闲'  end ) [状态] From #TH


------解决方案--------------------
变一下格式成这样的也可以么,我能想到的只有这些了:

--第一种结果
select *,
(case when(convert(datetime,[会议时间]+' '+[会议室开始时间],121)<=GETDATE() and convert(datetime,[会议时间]+' '+[会议室结束时间],121)>GETDATE()) then '使用'
else '空闲'  end ) [状态] From #TH

--第二种结果
select [会议室名称],
isnull([2013-12-23],'空闲') [2013-12-23],
isnull([2013-12-26],'空闲') [2013-12-26],
isnull([2013-12-28],'空闲') [2013-12-28],
isnull([2013-12-29],'空闲') [2013-12-29],
isnull([2013-12-30],'空闲') [2013-12-30] 
from 
(
select *,
(case when(convert(datetime,[会议时间]+' '+[会议室开始时间],121)<=GETDATE() and convert(datetime,[会议时间]+' '+[会议室结束时间],121)>GETDATE()) then '使用'
else '空闲' &n