日期:2014-05-18  浏览次数:20736 次

求SQL语句谢谢!!
表TT如下:
idno B icdate   ictime
000008 1 2007/9/26   01:00:00
000008 1 2007/9/26   07:00:00
000008 1 2007/9/26   12:30:00
000008 1 2007/9/26   13:30:00
000008 1 2007/9/26   17:00:00
000008 1 2007/9/27   00:30:00
000011 2 2007/9/26   13:00:00
000011 2 2007/9/26   19:00:00
000011 2 2007/9/26   23:00:00
000011 2 2007/9/27   01:00:00
000011 2 2007/9/27   07:00:00
000011 2 2007/9/27   11:30:00
000011 2 2007/9/27   12:30:00

  要得   到查询结果
idno b     icdate         T1         T2         T3         T4       T5       T6
000008 1     2007/9/26   01:00:00   07:00:00   12:30:00   13:30:00   17:00:00   00:30:00
                                            T7               T8
                                            null           null
000011 2     2007/9/26   13:00:00   19:00:00   23:00:00   01:00:00   07:00:00   11:30:00
                                            T7               T8
                                            12:30:00   null
注:
B   为1   的     第一天13:00~   第二天12:30  
B   为2   的     第一天1:00   ~   第二天00:30  
查询分析出如上   T1~T8   个时间段先后也如上。超出8个的可以不用理会。注意icdate   的日期。
先谢谢各位了!!

------解决方案--------------------
declare @sql varchar(8000)
set @sql = 'select idbo,Sdate '
select @sql = @sql + ' , max(case px when ' ' ' + cast(px as varchar) + ' ' ' then stime else ' ' ' ' end) [T ' + cast(px as varchar) + '] '
from (select distinct px from (select px=(select count(1) from tb where idbo=t.idbo and Sdate = t.Sdate and stime <t.stime)+1 , * from tb t) m where px <= 8) as a
set @sql = @sql + ' from (select px=(select count(1) from tb where idbo=t.idbo and Sdate = t.Sdate and stime <t.stime)+1 , * from tb t) m where px <= 8 group by idbo,Sdate '
exec(@sql)

------解决方案--------------------
--用你昨天的数据测试 <=4的情况, <=8的情况类似,把数据改了就行了.

create table tb(idbo varchar(10),dd int,Sdate varchar(10),stime varchar(10))
insert into tb values( '000008 ',1, '2007/09/26 ', '08:00:00 ')
insert into tb values( '000008 ',1, '2007/09/26 ', '12:30:00 ')
insert into tb values( '000008 ',1, '2007/09/26 ', '13:30:00 ')
insert into tb values( '000008 ',1, '2007/09/26 ', '17:00:00 ')
insert into tb values( '000011 ',1, '2007/09/26 ', '07:30:00 ')
insert into tb values( '000011 ',1, '2007/09/26 ', '11:30:00 ')
insert into tb values( '000011 &#