샘플 데이터는 다음과 같습니다. 필터 SQL 쿼리?
l16seqno | l16lcode | carrno | ecarrno | l16qty | reasoncode
32001 | 12 | 207620 | 370036873034035916 | 32 | 0
32269 | 12 | 207620 | 370036873034035916 | -32 | 800
39075 | 12 | 207620 | 370036873034035916 | 32 | 0
39074 | 12 | 207622 | 370036873034035923 | 32 | 0
32268 | 12 | 207622 | 370036873034035923 | -32 | 800
31999 | 12 | 207622 | 370036873034035923 | 32 | 0
32271 | 12 | 207624 | 370036873034035930 | -32 | 800
32005 | 12 | 207624 | 370036873034035930 | 32 | 0
39077 | 12 | 207624 | 370036873034035930 | 32 | 0
테이블 Z02T1의 모든 이벤트 로깅이 있습니다. 언제든지 l16lcode = 12 - 팔레트를 차단 또는 차단 해제하고 있습니다. 팔레트를 막을 때 feild는 음수이고 차단을 해제하면 양수입니다.
이유 코드는 Z02T2 테이블에서 찾을 수 있습니다 (각 로그 레코드의 고유 일련 번호 인 l16seqno로 Z02T1에 연결할 수 있음).
Z14T1 테이블에는 팔레트 - 팔레트 번호에 대한 정보가 들어 있습니다.
내가 가장 가까운 다음 레코드를 찾을 때 차단 해제 코드 0
이 내 목표는 ... 코드 (800)와 차단 된 경우
즉 각각의 팔레트 두 줄을 찾는 것입니다 ... 그리고 이유 코드 0 인이 팔레트에 대한 l16lcode = 12 (이유 코드 800 인이 팔레트에 대한 레코드가있는 경우).
내가 만든 초기 쿼리는 다음과 같습니다
select Z02T1.datreg, Z02T1.l16seqno, Z02T1.l16lcode, Z02T1.divcode, Z02T1.carrno,
Z14T1.ecarrno, Z02T1.l16qty, Z02T2.reascode from Z02T2
inner join Z02T1 on Z02T1.l16seqno=Z02T2.l16seqno
left outer join Z14T1 ON Z14T1.carrno=Z02T1.carrno
where Z02T1.l16lcode=12
and (Z02T2.reascode=800 or Z02T2.reascode=0)
order by Z14T1.ecarrno
내가 reasoncode으로 다음 reasoncode 800 매우 다음 레코드로 하나 개의 레코드를 얻기 위해이 쿼리를 변경할 수있는 방법 같은 ecarrno feild가 0 ? 여기
이 SQL Server OR oracle입니까? PL/SQL 제거 태그가 없습니다. – OldProgrammer
SQL 서버 용 – Hansen
@Hansen - SS 버전은 무엇입니까? –