सबसे पहले, परिभाषा के अनुसार SQL में डेटा का कोई ऑर्डर नहीं होता है जब तक कि ORDER BY
उपयोग किया जाता है।
आपको अपनी तालिका में एक अतिरिक्त कॉलम प्रदान करना होगा जो ऑर्डर निर्धारित करता है, और इसका उपयोग ORDER BY
में किया जा सकता है खंड, उदाहरण के लिएRN
नीचे दिए गए उदाहरण में कॉलम:
RN CS_ID
---------- ----------
1 a
2 b
3 a
4 a
5 a
6 b
7 b
8 b
9 b
उपरोक्त डेटा के लिए आप आवश्यक परिणाम प्राप्त करने के लिए सामान्य तालिका अभिव्यक्ति (पुनरावर्ती क्वेरी) का उपयोग कर सकते हैं, उदाहरण के लिए नीचे दी गई क्वेरी Oracle डेटाबेस पर काम करती है:
WITH my_query( RN, cs_id , cont ) AS (
SELECT t.rn, t.cs_id, 1
FROM My_table t
WHERE rn = 1
UNION ALL
SELECT t.rn, t.cs_id,
case when t.cs_id = m.cs_id
then m.cont + 1
else 1
end
FROM My_table t
JOIN my_query m
ON t.rn = m.rn + 1
)
select * from my_query
order by rn;
RN CS_ID CONT
---------- ---------- ----------
1 a 1
2 b 1
3 a 1
4 a 2
5 a 3
6 b 1
7 b 2
8 b 3
9 b 4