IBM DB2:使用MINUS排除subselect语句中的信息

时间:2015-10-28 21:57:41

标签: sql db2

目前我遇到的问题是在下面为此特定查询带回正确的数据。我试图在MINUS关键字后返回从subselect语句中排除选择条件的数据。

SELECT
DISTINCT ORDER.OWNER, ORDER_H.PO_ID
FROM ORDER ORDER
WHERE ORDER.TYPE != 'X'
AND ORDER.STATUS='10'
AND ORDER.CLOSE_DATE IS NULL MINUS
(
   SELECT
   DISTINCT ORDER.OWNER, ORDER.PO_ID
   FROM ORDER ORDER
   INNER JOIN COST COST ON COST.PO_ID = ORDER.PO_ID
   AND COST.CODE IN
   (
      'LGSF',
      'DFCDC',
      'BOF',
      'TFR',
      'RFR',
      'TFLHC',
      'BF',
      'CBF',
      'CHAP',
      'DYPH' ,
      'OFFP',
      'PTWT',
      'DTEN',
      'OTHR',
      'DMSG',
      'STOR',
      'TOF',
      'ANTCV',
      'ANTIP',
      'CVD',
      'TRAN'
   )
   WHERE ORDER.TYPE != 'OTR'
   AND ORDER.STATUS = '10'
   AND (COST.E_AMT > 0 AND COST.A_AMT IS NULL)
)
FOR READ ONLY WITH UR

返回的数据包括子查询中的数据,而不是从结果集中排除此数据。我无法弄清楚为什么会这样。有没有人知道为什么在MINUS之后它不排除这些数据并带回COST.E_AMT实际上大于0的数据,并且实际上为子查询中列出的每个CODE填充了COST.A_AMT?任何帮助将不胜感激,谢谢。

0 个答案:

没有答案