Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 请求查询_Sql Server 2008 - Fatal编程技术网

Sql server 2008 请求查询

Sql server 2008 请求查询,sql-server-2008,Sql Server 2008,我需要如下所示的数据,我只需要id=1的 答案如下 Create table #job(id int,start_time datetime,end_time datetime) insert into #job values(1,'2012-08-06 11:30:00.000','2012-08-06 15:30:00.000') insert into #job values(1,'2012-08-06 15:30:00.000','2012-08-06 16:30:00.000') i

我需要如下所示的数据,我只需要id=1的

答案如下

Create table #job(id int,start_time datetime,end_time datetime)

insert into #job values(1,'2012-08-06 11:30:00.000','2012-08-06 15:30:00.000')
insert into #job values(1,'2012-08-06 15:30:00.000','2012-08-06 16:30:00.000')
insert into #job values(2,'2012-08-06 16:30:00.000','2012-08-06 17:30:00.000')
insert into #job values(1,'2012-08-06 17:30:00.000','2012-08-06 18:30:00.000')
试试这个:

1 '2012-08-06 11:30:00.000' '2012-08-06 16:30:00.000'
1 '2012-08-06 17:30:00.000'  '2012-08-06 18:30:00.000' 
select j1.id,min(j1.start_time) start_time,max(j2.end_time) end_time  from #job j1 inner join #job j2
on j1.id=j2.id and j1.end_time = j2.start_time 
group by j1.id

union

select * from #job where start_time not in(

select start_time  from #job where start_time in(
select j1.start_time from #job j1 inner join #job j2
on j1.id=j2.id and j1.end_time = j2.start_time and j1.id=1)

union all

select start_time from #job where start_time in(
select j1.end_time from #job j1 inner join #job j2
on j1.id=j2.id and j1.end_time = j2.start_time and j1.id=1)
) 

and id=1