टेबल:
Col1 Col2 Col3
43 1234 abc
42 1234 abc
41 1234 abc
35 1234 abc
34 5678 def
उद्देश्य निम्नलिखित के आधार पर 1 या 0 के रूप में एक नया कॉलम Col4
बनाना है:
प्रत्येक विभाजन के भीतर Col2 and Col3
,
. के साथ द्वारा भी
- यदि Col1-1 मौजूद नहीं है (या)
- यदि 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
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।