2016-09-15 9 views
0

に基づいて有効/無効を選択します。今の問題は、日付範囲23から01の間で、ある私は、次の表持つ日付

表のTRANSACTION

ID   | DATE   
----   ------ 
1    | 23-01-16 
2    | 23-01-16 
1    | 24-01-16 

表USER_ID

 ID 
---- 
1 
2 

を-16と25-01-16では、2が24-01-16で非アクティブで、1,2が25-01-16で非アクティブであることをどのように検出しますか

If私は使用しています

私は特定の日付ではなく、その範囲の間で非アクティブなIDを取得します。

どのようにするかについてのアイデア。

答えて

0

次のようなものを使用することができます:connect by

select user_id.id, day 
from user_id 
    cross join (
       select date '2016-01-23' + level -1 as day 
       from dual 
       connect by date '2016-01-23' + level -1 <= date '2016-01-25' 
       ) days 
    left outer join transaction_ on (user_id.id_ = transaction.id and 
             days.day = transaction.date 
            ) 
where transaction.date is null 

一部は、入力間隔(23-25/01)あなたによると、日のリストを作成します。残りの部分は外部結合を使用して欠落しているオカレンスのみをチェックします。

+0

ありがとう@Aleksej –

関連する問題