समस्या:
आप पंक्तियों को तिथि के अनुसार क्रमित करना चाहते हैं।
उदाहरण 1:
exam
टेबल में दो कॉलम होते हैं, subject
और exam_date
।
विषय | परीक्षा तिथि |
---|---|
गणित | 2019-12-19 |
अंग्रेज़ी | 2020-01-08 |
विज्ञान | 2020-01-05 |
स्वास्थ्य | 2020-01-05 |
कला | शून्य |
आप पंक्तियों को exam_date
. के अनुसार क्रमित करना चाहते हैं ।
समाधान:
SELECT * FROM Exam ORDER BY ExamDate;
परिणाम इस तरह दिखता है (पंक्तियों को ExamDate
. द्वारा आरोही क्रम में क्रमबद्ध किया जाता है ):
विषय | परीक्षा तिथि |
---|---|
कला | शून्य |
विज्ञान | 2020-01-05 |
स्वास्थ्य | 2020-01-05 |
अंग्रेज़ी | 2020-01-08 |
गणित | 2019-12-19 |
चर्चा:
ORDER BY
का प्रयोग करें कीवर्ड और कॉलम का नाम जिसके द्वारा आप सॉर्ट करना चाहते हैं। इस तरह, आप इस कॉलम के आधार पर डेटा को आरोही क्रम में क्रमबद्ध करेंगे। आप ASC
. का भी उपयोग कर सकते हैं कीवर्ड यह स्पष्ट करने के लिए कि क्रम आरोही है (सबसे पहले की तारीख पहले दिखाई जाती है, नवीनतम तारीख आखिरी दिखाई जाती है, आदि)।
SELECT * FROM Exam ORDER BY ExamDate ASC;
यदि आप सबसे पहले नवीनतम तिथि और सबसे अंतिम तिथि देखना चाहते हैं, तो आपको अवरोही क्रम में क्रमबद्ध करना होगा। DESC
का उपयोग करें इस मामले में कीवर्ड।
SELECT * FROM Exam ORDER BY ExamDate DESC;
ध्यान दें कि T-SQL में, NULL
आरोही क्रम में छँटाई करते समय s पहले प्रदर्शित होते हैं और अवरोही क्रम में छँटाई करते समय अंतिम होते हैं। साथ ही, समान ExamDate
. वाली पंक्तियां गैर-नियतात्मक क्रम में प्रदर्शित होते हैं (आप Science
देख सकते हैं दूसरा और Health
तीसरा, या Health
दूसरा और Science
तीसरा)।
उदाहरण 2:
exam
तालिका में निम्नलिखित कॉलम हैं:subject
, exam_year
, exam_month
, और exam_day
. महीना नाम से दिया जाता है, संख्या से नहीं।
विषय | परीक्षा वर्ष | परीक्षा का महीना | परीक्षा का दिन |
---|---|---|---|
गणित | 2019 | दिसंबर | 19 |
अंग्रेज़ी | 2020 | जनवरी | 8 |
विज्ञान | 2020 | जनवरी | 5 |
स्वास्थ्य | 2020 | जनवरी | 5 |
कला | शून्य | शून्य | शून्य |
आप परीक्षा तिथि के अनुसार पंक्तियों को क्रमबद्ध करना चाहते हैं।
समाधान:
SELECT * FROM Exam ORDER BY CAST( CAST(ExamYear AS VARCHAR(4)) + '-' + ExamMonth + '-' + CAST(ExamDay AS VARCHAR(2)) AS DATE);
परिणाम इस तरह दिखता है (पंक्तियों को ExamYear
. द्वारा आरोही क्रम में क्रमबद्ध किया जाता है , ExamMonth
, और ExamDate
):
विषय | परीक्षा वर्ष | परीक्षा का महीना | परीक्षा का दिन |
---|---|---|---|
कला | शून्य | शून्य | शून्य |
स्वास्थ्य | 2020 | जनवरी | 5 |
विज्ञान | 2020 | जनवरी | 5 |
अंग्रेज़ी | 2020 | जनवरी | 8 |
गणित | 2019 | दिसंबर | 19 |
चर्चा:
तिथि के अनुसार समूह बनाने के लिए, वर्ष, माह और दिन के मानों से दिनांक मान बनाएं। ऐसा करने के लिए, CAST () फ़ंक्शन का उपयोग करें। यदि आपके पास 'YYYY-Month-DD
. में एक स्ट्रिंग के रूप में संग्रहीत दिनांक है ' प्रारूप में, आप इसे CAST(date_string AS date)
using का उपयोग करके किसी तिथि पर कास्ट कर सकते हैं . सबसे पहले, आपको CAST() फ़ंक्शन का उपयोग करके भी एक स्ट्रिंग बनाने की आवश्यकता है:
CAST(ExamYear AS VARCHAR(4)) + '-' + ExamMonth + '-' + CAST(ExamDay AS VARCHAR(2))
अभिव्यक्ति CAST(ExamYear AS VARCHAR(4))
ExamYear
. में संग्रहीत संख्या से एक स्ट्रिंग बनाता है . अभिव्यक्ति CAST(ExamDay AS VARCHAR(2))
ExamDay
. में संग्रहीत संख्या से एक स्ट्रिंग बनाता है . ExamMonth
पहले से ही एक स्ट्रिंग है, इसलिए इसे कास्ट करने की कोई आवश्यकता नहीं है।
फिर, आपको CAST(date_string AS date)
का उपयोग करके इस स्ट्रिंग को किसी तिथि पर डालना होगा समारोह:
CAST( CAST(ExamYear AS VARCHAR(4)) + '-' + ExamMonth + '-' + CAST(ExamDay AS VARCHAR(2)) AS DATE)
इसका उपयोग ORDER BY
के साथ करें तिथि के अनुसार पंक्तियों को आरोही क्रम में क्रमबद्ध करने के लिए खंड। यदि आप पंक्तियों को अवरोही क्रम में देखना चाहते हैं, तो बस एक DESC
संलग्न करें कीवर्ड, इस तरह:
SELECT * FROM Exam ORDER BY CAST( CAST(ExamYear AS VARCHAR(4)) + '-' + ExamMonth + '-' + CAST(ExamDay AS VARCHAR(2)) AS DATE) DESC;