示例数据为:过滤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的哪个版本? –