在多行中查找开始日期和结束日期不为空的位置

时间:2014-04-11 18:57:14

标签: sql sql-server-2005

为了保持简单,我有一张桌子。一列是一个数字,一个是开始日期,一个是完成日期。当输入批号的第一个条目时,它具有开始日期。根据完成批次所需的班次数量,我可以在服务器行完成之前没有日期,然后我就有完成日期。

SHIFT .........批次..........开始..........结束
1 ................... 1 ............ O ............. Null
2 ................... 1 .......... Null ......... Null
3 .................. 1 .......... Null .......... O
1 .................. 2 ........... O ........... Null

我想挑选具有开始日期和结束日期的批号,即使它们不在同一行上。这可能。

SELECT t1.LotNumber 来自BlendingCycleTime t1 INNER JOIN BlendingCycleTime t2 ON t1.LotNumber = t2.LotNumber 在哪里t1.ActualStartDayTime不为NULL且t2.ActualFinishDayTime为空

我已经登陆了这个,但它并没有真正起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

create table #tb (Shift int,lot int,StartD int, endD int)
go
insert into #tb values(1,1,0,null),
                      (2,1,null,null),               
                      (3,1,null,0),               
                      (1,2,0,null)

select * from #tb

select Lot
from #tb
group by Lot
Having Max(startD) is not null and Max(endD) is not null