需要更改硬编码并在此查询中过滤

时间:2015-11-16 21:03:59

标签: sql db2-400

db是db2-400,下面我需要添加这个部分 “WHERE T01.OTTRNC IN ('001', 'CQU', 'RQU',

如果正在读取的ottrnc在此表代码中,它应该检查表'Codes',而不是这个硬编码。 我还想添加此列 - t01.OTUSRN如果它位于此表“CLOSERS”中,那么我们也希望在此条件下过滤整个列。

SELECT ALL T01.OTCOM#, T02.IHPTTC,                       
T02.IHSLR#, T01.OTTRT,                                                                 
T01.OTORD#, T02.IHINV#, T01.OTTRND, T02.IHORDT,               
T02.IHDOCD, T02.IHORG$, T02.IHORD$,                                            
T02.IHORG$-(T02.IHORD$) AS                
INVAMT, T01.OTUSRN, T01.OTTRNC                                                    
FROM ASTDTA.OETRANOT T01                           
     INNER JOIN                                                                                               
ASTDTA.OEINHDIH T02 ON T01.OTCOM# = T02.IHCOM#                                
AND     
T01.OTORD# = T02.IHORD#                                                                       
WHERE T01.OTTRNC IN ('001', 'CQU', 'RQU',                                                                                        
'CRF',                                                                       
'RRF', 'CWA', 'RWA', 'OCS', 'CRF', 'RBC', 'LMY', 'BCS',                                                                                                  
'BCQ')    

1 个答案:

答案 0 :(得分:2)

使用INNOT EXISTS时,子查询可以解决这两个问题。

WHERE
   T01.OTTRNC IN (SELECT Code FROM Codes) AND
   NOT EXISTS(SELECT * FROM Closers WHERE T01.OTUSRN = OTUSRN)