1

我的目的是制作一份详细的报告,显示哪些客户在过去 12 个月内根本没有交易以及他们的最后交易日期。

select client.client_code,client.client_name,dealing_record.transaction_number,
transaction_type.transaction,dealing_record.deal_date
FROM client INNER JOIN dealing_record ON client.client_id=dealing_record.client_id
            INNER JOIN Transaction_type ON    
        transaction_type.transaction_type_id=dealing_record.transaction_type_id
 WHERE deal_date NOT BETWEEN to_date('07-Nov-2012') AND SYSDATE;

上面的sql代码产生

CLIENT_COD CLIENT_NAME          TRANSA TRANS DEAL_DATE
---------- -------------------- ------ ----- ---------
C001       David clare          D02    Sell  20-FEB-10
C002       James love           D03    Buy   05-MAY-11
C004       Jame lee             D05    Buy   05-JAN-12
C005       Kay Ade              D07    Buy   05-DEC-11

上面的结果恰好显示了我想要的一切,但有一点问题。所有客户在过去 12 个月内都没有进行过交易,但 david clare 在过去 12 个月内和之前都进行过交易。目的是向那些在过去 12 个月内从未进行过交易的客户展示。

4

1 回答 1

1

尝试这样的事情:

SELECT c.client_code,
  c.client_name,
  dr.transaction_number,
  tt.TRANSACTION,
  dr.deal_date
FROM client
INNER JOIN dealing_record dr ON c.client_id = dr.client_id
INNER JOIN Transaction_type tt ON tt.transaction_type_id = dr.transaction_type_id
WHERE c.client_id NOT IN (
    SELECT client_id
    FROM dealing_record
    WHERE deal_date > '07-Nov-2012'
    );

这将排除之后有交易日期的 client_id'07-Nov-2012'

于 2013-11-12T15:35:37.247 回答