टेबल:

Col1       Col2         Col3
43         1234         abc
42         1234         abc
41         1234         abc
35         1234         abc
34         5678         def

उद्देश्य निम्नलिखित के आधार पर 1 या 0 के रूप में एक नया कॉलम Col4 बनाना है:

प्रत्येक विभाजन के भीतर Col2 and Col3,
. के साथ द्वारा भी

  1. यदि Col1-1 मौजूद नहीं है (या)
  2. यदि Col1-1 (और) Col1-2 दोनों मान तालिका में मौजूद हैं,
    तो Col4 1 है, और 0.

आउटपुट तालिका:

 Col1            Col2         Col3        Col4
 43              1234         abc         1
 42              1234         abc         0
 41              1234         abc         1
 35              1234         abc         1
 34              5678         def         1
-1
omdurg 1 अगस्त 2020, 20:57

1 उत्तर

सबसे बढ़िया उत्तर

अगर मैं आपके द्वारा वर्णित तर्क का पालन कर रहा हूं:

select t.*,
       (case when lag(col1) over (partition by col2, col3 order by col1) <> col1 - 1
             then 1
             when lag(col1) over (partition by col2, col3 order by col1) is null
             then 1
             when lag(col1, 2) over (partition by col2, col3 order by col1) = col1 - 2
             then 1
             else 0
        end) as col4
from t;

यहां एक db<>fiddle है।

1
Ankit Bajpai 2 अगस्त 2020, 14:06