目前我遇到的问题是在下面为此特定查询带回正确的数据。我试图在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?任何帮助将不胜感激,谢谢。