与内部联接相关的问题

时间:2013-11-12 15:20:38

标签: sql sqlplus

我的意图是制作一份详细的报告,说明在过去的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个月内处理过,但大卫克莱尔在12个月之前和之前都处理过..目的是向那些在过去12个月内从未处理过的人展示。

1 个答案:

答案 0 :(得分: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'
    );

这将排除在'07-Nov-2012'

之后有deal_date的client_id
相关问题