示例數據爲:過濾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中的所有事件。每當我有llclcode = 12時 - 我正在阻止或取消阻止托盤。當我擋住一個托盤時,l16ltyty feild是負面的,當我解鎖時 - 這是正面的。
原因代碼可以在Z02T2表中找到(可以通過l16seqno連接到Z02T1 - 每個日誌記錄的唯一序列號)。
Z14T1表包含有關托盤 - 托盤編號的信息。
我的目標是要找到兩行每個托盤即
與代碼800阻塞時......然後......當暢通與代碼0
爲此,我必須要找到最近的下一個記錄對於原因代碼爲0的相同貨盤(在此原因代碼爲800的貨盤有記錄之後),l16lcode = 12。
我已經作出初步查詢是:
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 800,然後第二天紀錄reasoncode 0爲同一ecarrno費爾德 ?
這是sql-server OR oracle嗎?沒有PL/SQL刪除標籤。 – OldProgrammer
它是用於SQL服務器 – Hansen
@Hansen- SS的哪個版本? –