如何连接两个表,其中第一个ID不能包含在第二个中,但它们是关键

时间:2017-10-02 19:36:08

标签: sql oracle

我有以下问题。我必须为尚未签署协议的客户获取所有记录,然后2个月后他们也没有合同。与此同时,他们中的一些人签了合同。

我有这些专栏:

CUSTOMER_ID DATE        CONTRACT_NO
123         2016-03-05  4433666
234         2016-03-08  6633666
456         2016-03-17  1224633
456         2016-03-11  NULL
875         2016-03-10  2466443
875         2016-03-06  NULL
422         2016-03-21  4433555

你能告诉我我能做些什么吗?

我正在使用Oracle。

1 个答案:

答案 0 :(得分:1)

  

尚未签署协议的客户,然后2个月后他们没有签署协议   也有合同。

换句话说 - 对于给定的记录,检查在下个月的2个月内是否没有任何具有相同clientId且不是null contract_no的记录。

SELECT * FROM table t
WHERE NOT EXISTS (
   SELECT 1 FROM table t1
   WHERE t.CUSTOMER_ID = t1.CUSTOMER_ID
     AND t1.DATE > t.DATE 
     AND t1.DATE <= t.DATE + interval '2' month
     AND t1.CONTRACT_NO IS NOT NULL
)