如果可以的话。我想选择#一次的订单。
根据这些trn代码'CSS','CQU','CWA','OCS','CRF',
'BCS','CCN','RBC','001','RQU','RRF','RWA
目前每个订单和多个trn代码可以有一行 所以我们可以拥有 订单#ottrnc 12345 001 12345 RBC 12345 CWA
是否可以只选择一个订单#?但问题是,所有订单首先获得001。然后,如果订单完成了某些事情,它就会得到其他的trn代码。在上面的例子中,我们想要RBC或CWA行。
SELECT T01.OTTRT,T01.OTCOM#, T02.OHPTTC, T02.OHSLR#, T01.OTORD#,
T01.OTTRND, T02.OHORDT, T02.OHORDD, T02.OHTTN$, T01.OTUSRN,
T02.OHOSTC, T01.OTTRNC FROM ASTDTA.OETRANOT T01 INNER JOIN
asTDTA.OEORHDOH T02 ON T01.OTCOM# = T02.OHCOM# AND T01.OTORD# =
T02.OHORD# WHERE T01.OTTRNC IN ('CSS', 'CQU', 'CWA', 'OCS', 'CRF',
'BCS', 'CCN', 'RBC', '001', 'RQU', 'RRF', 'RWA') AND T02.OHORDD >=
20140101 AND T02.OHOSTC <> 'CN'
答案 0 :(得分:1)
Mat Richardson指出,SELECT DISTINCT
可能符合您对“一次选择订单”的期望。在不知道如何填充/填充其余列的情况下,下面的查询应该适用于大多数DBMS,并且应该为每个具有OTTRNC为001的订单返回一个订单号。并且至少还有一个其他代码中的一个列举。
SELECT DISTINCT
T01.OTTRNC
FROM ASTDTA.OETRANOT T01
WHERE T01.OTTRNC IN ('CSS', 'CQU', 'CWA', 'OCS', 'CRF',
'BCS', 'CCN', 'RBC', '001', 'RQU', 'RRF', 'RWA')
AND
EXISTS (
SELECT 1
FROM ASTDTA.OETRANOT IT01
WHERE IT01.OTTRNC = ('001')
AND IT01.OTORD# = T01.OTORD#
)