2014-10-02 103 views
0

如果这是可能的。我想一次选择订单#。根据这些trn代码'CSS','CQU','CWA','OCS','CRF', ,'BCS','CCN','RBC','001','RQU','RRF “” RWA是否有可能在这个sql中有逻辑过滤器?

目前有可以为每个订单和多万亿代码 一排,所以我们可以有 为了#ottrnc 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

你看过在查询中使用SELECT DISTINCT来提取唯一值吗? – 2014-10-02 21:37:13

+1

是的,但可以如何确定正确的'trn'返回?您将需要使用最有可能的聚合查询。另外,你正在使用哪个'RDBMS'? – sgeddes 2014-10-02 21:40:02

+0

为了帮助您,您将不得不告诉我们您如何确定正确的trn代码来进行选择。在上面列出的情况下,哪些会被退回,为什么? RCB或CWA? – 2014-10-02 22:20:15

回答

1

由于垫理查德森指出,SELECT DISTINCT可能会满足您的期望在“选择订单#一次”条款。在不知道其余列的填充/填充情况的情况下,下面的查询应该可以在大多数DBMS中使用,并且应该为每个具有001的OTTRNC的订单返回一个订单号并且至少还有一个其他代码列举。

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# 
     ) 
相关问题