2017-02-07 4 views
0

私はここに投稿すると考えられる同様の質問があります。 3日以上連続して不在の従業員が必要です。土曜日/日曜日/その他の日には、すべての日が休日なしであるとします。oracle SQLの連続レコード

以下の表では、結果セットに20342123と20311111が必要です。 従業員20311333は4枚の葉を取っていますが、連続していません。

ありがとうございました。

Emp Id  | AsofDate  | Comment 
---------------------------------- 
20342123 | 1-JAN-2017| Absent 
20342123 | 2-JAN-2017| Absent 
20342123 | 3-JAN-2017| Absent 
20311111 | 1-JAN-2017| Absent 
20311111 | 2-JAN-2017| Absent 
20311111 | 3-JAN-2017| Absent 
20311333 | 5-JAN-2017| Absent 
20311333 | 6-JAN-2017| Absent 
20311333 | 8-JAN-2017| Absent 
20311333 | 9-JAN-2017| Absent 
20322222 | 1-JAN-2017| Absent 
20322222 | 2-JAN-2017| Absent 

答えて

1

あなたは "ギャップ-と-島" ソリューションを適用することができますが、私はlag()/lead()は、この問題のために単純であると思う:

select distinct emp_id 
from (select t.*, 
      lead(date) over (partition by empid order by date) as date_1, 
      lead(date, 2) over (partition by empid order by date) as date_2 
     from t 
     where comment = 'Absent' -- not sure if this is important 
    ) t 
where date_1 = date + 1 and date_2 = date + 2; 
+0

感謝ゴードン・リノフ。私はそこに一つのポイントを逃した。正しい質問は '3回以上の連続発生...'です。はいコメント=他の値もそこにあるので、「不在」が必要です。 –

+0

@DevadasWagle。 。 。これは3行続けている。したがって、それは3つ以上連続しています。 –

+0

申し訳ありませんが、3つの連続した行でも機能しません。私はテーブルにレコードがあることを知っていますが、出力には現れません。 –

関連する問題