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

如何使用sql语句查找上下条符合实际需求的数据
最近做一个程序,需要上下查找需要满足条件的信息,数据如下:
其中TA001为单别,TA002为单号,TA003为加工顺序,TA004为工艺编号,TA006为车间编号,TA007为车间名称,TA031为完工日期,UDF05为是否为关键工艺
create table cl
(TA001 int, TA002 int,TA003 int,TA004 int,TA006 int,TA007  varchar(10),
 TA031 varchar(8),UDF05 varchar(2))
insert into cl
 select 511,1307160303,10,1,11,'车间一','20130722','Y' union all
 select 511,1307160303,20,76,10,'车间二','20130826','Y' union all
 select 511,1307160304,10,76,10,'车间二','','' union all
 select 511,1307160304,20,19,10,'车间二', '', '' union all
 select 511,1307160304,30,44,10,'车间二','','' union all
 select 511,1307160304,40,53,10,'车间二','20130826','Y' union all
 select 511,1307160304,50,15,13,'车间三','20130828','Y' union all
 select 511,1307160305,10,15,13,'车间三','','' union all         
 select 511,1307160305,15,154,13,'车间三','20130831','Y' union all
 select 511,1307160311,10,1,11,'车间一','20130724','Y' union all
 select 511,1307160313,10,1,11,'车间一','20130717','Y' union all
 select 511,1307160313,20,76,10,'车间二','20130807','Y' union all
 select 511,1307170001,80,12,13,'车间三','','' union all         
 select 511,1307170001,90,13,13,'车间三','20130823','Y' union all
 select 511,1307170001,100,15,13,'车间三','','' union all
 select 511,1307170002,10,1,11,'车间一','20130922','Y'



需要做如下判断:
情况一:TA001、TA002相同如果UDF05勾到这个车间的最后一道加工序,上边这个车间所有工序默认完工时间就为最后一道序的完工时间
情况二:如果TA001、TA002相同如果UDF05勾到这个车间的中间一道加工序,则要看这道序下边紧挨着的是不是这个车间的,如果是也要默认为这个完工时间



根据需要完成8月的查询结果如下:
TA001	TA002	TA003	TA004	TA006	TA007	TA031	UDF05
511 1307160303 20 76 10 车间二 20130826 Y
511 1307160304 10 76 10 车间二         
511 1307160304 20 19 10 车间二         
511 1307160304 30 44 10 车间二         
511 1307160304 40 53 10 车间二 20130826 Y
511 1307160304 50 15 13 车间三 20130828 Y
511 1307160305 10 15 13 车间三         
511 1307160305 15 154 13 车间三 20130831 Y
511 1307160313 20 76 10 车间二 20130807 Y
511 1307170001 80 12 13 车间三         
511 1307170001 90 13 13 车间三 20130823 Y
511 1307170001 100 15 13 车间三

在此,对您的帮助表示深深的感谢!!!






------解决方案--------------------

create table cl
(TA001 int, TA002 int,TA003 int,TA004 int,TA006 int,TA007  varchar(10),
 TA031 varchar(8),UDF05 varchar(2))
 
insert into cl
 select 511,1307160303,10,1,11,'车间一','20130722','Y' union all
 select 511,130716030