0

助けてください!!!私は SQL Dev 2.1 を使用しており、テーブルを結合して最新の日付を検索したいと考えています。私のクエリは以下の通りです:-

最新の DEBT_COLLECTION_STEPS_V.TRANSACTION_DATE を取得したいのは、同じ請求書番号に関連する複数の日付があるが、DEBT_COLLECTION_STEPS_V.DESCRIPTION に対して異なるコメントが投稿されているためです。

SELECT AR_INVOICE_INQ_V.CLIENT CLIENT,
AR_INVOICE_INQ_V.CLI_NAME CLI_NAME,
AR_INVOICE_INQ_V.PARTNER PARTNER,
AR_INVOICE_INQ_V.PAR_NAME PAR_NAME,
AR_INVOICE_INQ_V.MANAGER MANAGER,
AR_INVOICE_INQ_V.REFERENCE REFERENCE,
AR_INVOICE_INQ_V.STATUS_CODE STATUS_CODE,
AR_INVOICE_INQ_V.INVOICE_DATE INVOICE_DATE,
AR_INVOICE_INQ_V.TIME_BILLED TIME_BILLED,
AR_INVOICE_INQ_V.GROUP_CLIENT_CODE GROUP_CLIENT_CODE,
AR_INVOICE_INQ_V.GRPCLI_NAME GRPCLI_NAME,
AR_INVOICE_INQ_V.INVOICE_BALANCE,
SUBSTR(AR_INVOICE_INQ_V.MANAGER, 3, 2) CENTRE,
DEBT_COLLECTION_STEPS_V.DESCRIPTION,
MAX (BILLING_TRANSACTIONS_V.SEQUENCE_CODE),
DEBT_COLLECTION_STEPS_V.TRANSACTION_DATE
FROM AR_INVOICE_INQ_V
LEFT JOIN DEBT_COLLECTION_STEPS_V
ON DEBT_COLLECTION_STEPS_V.INVOICE_NUMBER = AR_INVOICE_INQ_V.REFERENCE
JOIN BILLING_TRANSACTIONS_V
ON BILLING_TRANSACTIONS_V.INVOICE_OR_CN_NUMBER = AR_INVOICE_INQ_V.REFERENCE
WHERE AR_INVOICE_INQ_V.INVOICE_BALANCE         >0
AND AR_INVOICE_INQ_V.MANAGER BETWEEN 'AAAA' AND 'AZZZ'
GROUP BY AR_INVOICE_INQ_V.CLIENT,
AR_INVOICE_INQ_V.CLI_NAME,
AR_INVOICE_INQ_V.PARTNER,
AR_INVOICE_INQ_V.PAR_NAME,
AR_INVOICE_INQ_V.MANAGER,
AR_INVOICE_INQ_V.REFERENCE,
AR_INVOICE_INQ_V.STATUS_CODE,
AR_INVOICE_INQ_V.INVOICE_DATE,
AR_INVOICE_INQ_V.TIME_BILLED,
AR_INVOICE_INQ_V.GROUP_CLIENT_CODE,
AR_INVOICE_INQ_V.GRPCLI_NAME,
AR_INVOICE_INQ_V.INVOICE_BALANCE,
SUBSTR(AR_INVOICE_INQ_V.MANAGER, 3, 2),
DEBT_COLLECTION_STEPS_V.DESCRIPTION,
DEBT_COLLECTION_STEPS_V.TRANSACTION_DATE;
4

1 に答える 1

0

LEFT JOIN を、INVOICE_NUMBER ごとに MAX(TRANSACTION_DATE) を取得するクエリに置き換えます。

それはあなたが望むものを与えるはずです:

select AR_INVOICE_INQ_V.CLIENT CLIENT,
  AR_INVOICE_INQ_V.CLI_NAME CLI_NAME,
  AR_INVOICE_INQ_V.PARTNER PARTNER,
  AR_INVOICE_INQ_V.PAR_NAME PAR_NAME,
  AR_INVOICE_INQ_V.MANAGER MANAGER,
  AR_INVOICE_INQ_V.REFERENCE REFERENCE,
  AR_INVOICE_INQ_V.STATUS_CODE STATUS_CODE,
  AR_INVOICE_INQ_V.INVOICE_DATE INVOICE_DATE,
  AR_INVOICE_INQ_V.TIME_BILLED TIME_BILLED,
  AR_INVOICE_INQ_V.GROUP_CLIENT_CODE GROUP_CLIENT_CODE,
  AR_INVOICE_INQ_V.GRPCLI_NAME GRPCLI_NAME,
  AR_INVOICE_INQ_V.INVOICE_BALANCE,
  SUBSTR(AR_INVOICE_INQ_V.MANAGER, 3, 2) CENTRE,
  DEBT_COLLECTION_STEPS_V.DESCRIPTION,
  MAX(BILLING_TRANSACTIONS_V.SEQUENCE_CODE),
  DC.TRANSACTION_DATE
from AR_INVOICE_INQ_V
left join (SELECT INVOICE_NUMBER, MAX(TRANSACTION_DATE) FROM DEBT_COLLECTION_STEPS_V GROUP BY INVOICE_NUMBER) DC on DC.INVOICE_NUMBER = AR_INVOICE_INQ_V.REFERENCE
join BILLING_TRANSACTIONS_V on BILLING_TRANSACTIONS_V.INVOICE_OR_CN_NUMBER = AR_INVOICE_INQ_V.REFERENCE
where AR_INVOICE_INQ_V.INVOICE_BALANCE > 0
  and AR_INVOICE_INQ_V.MANAGER between 'AAAA' and 'AZZZ'
group by AR_INVOICE_INQ_V.CLIENT,
  AR_INVOICE_INQ_V.CLI_NAME,
  AR_INVOICE_INQ_V.PARTNER,
  AR_INVOICE_INQ_V.PAR_NAME,
  AR_INVOICE_INQ_V.MANAGER,
  AR_INVOICE_INQ_V.REFERENCE,
  AR_INVOICE_INQ_V.STATUS_CODE,
  AR_INVOICE_INQ_V.INVOICE_DATE,
  AR_INVOICE_INQ_V.TIME_BILLED,
  AR_INVOICE_INQ_V.GROUP_CLIENT_CODE,
  AR_INVOICE_INQ_V.GRPCLI_NAME,
  AR_INVOICE_INQ_V.INVOICE_BALANCE,
  SUBSTR(AR_INVOICE_INQ_V.MANAGER, 3, 2),
  DEBT_COLLECTION_STEPS_V.DESCRIPTION,
  DC.TRANSACTION_DATE;
于 2013-10-24T14:58:32.810 に答える