Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

दिनांक सीमा के बीच वर्तमान मान और पिछले मान को प्रिंट करना

निम्नलिखित की तरह कुछ काम करना चाहिए:

SELECT ID, Date, Time, Status
 from (select ID, Date, Time, Status, row_number() over (order by Date) Ranking
        from MyTable
        where ID = @SearchId
         and Date <= @SearchDate) xx
 where Ranking < 3
 order by Date, Time

यह अधिकतम दो पंक्तियों में वापस आ जाएगा। यह स्पष्ट नहीं है कि आप दिनांक और समय डेटाटाइप किए गए कॉलम का उपयोग कर रहे हैं, या यदि आप वास्तव में आरक्षित शब्दों का उपयोग कॉलम नामों के रूप में कर रहे हैं, तो आपको इसके साथ झगड़ा करना होगा। (मैंने समय छोड़ दिया है, लेकिन आप इसे आसानी से विभिन्न ऑर्डरिंग और फ़िल्टरिंग में जोड़ सकते हैं।)

संशोधित मानदंड को देखते हुए, यह थोड़ा पेचीदा हो जाता है, क्योंकि एक पंक्ति का समावेश या बहिष्करण एक अलग पंक्ति में दिए गए मान पर निर्भर करता है। यहां, "दूसरी" पंक्ति, यदि दो या दो से अधिक पंक्तियाँ हैं, केवल तभी शामिल की जाती हैं जब "पहली" पंक्ति किसी विशेष मान के बराबर हो। ऐसा करने का मानक तरीका अधिकतम मान प्राप्त करने के लिए डेटा को क्वेरी करना है, फिर पहले सेट के परिणाम को संदर्भित करते हुए इसे फिर से क्वेरी करना है।

हालाँकि, आप row_number के साथ बहुत सारी पेंचीदा चीजें कर सकते हैं। इस पर काम करें:

SELECT ID, Date, Time, Status
 from (select
          ID, Date, Time, Status
         ,row_number() over (partition by case when Date = @SearchDate then 0 else 1 end
                             order by     case when Date = @SearchDate then 0 else 1 end
                                         ,Date) Ranking
        from MyTable
        where ID = @SearchId
         and Date <= @SearchDate) xx
 where Ranking = 1
 order by Date, Time

आपको दिनांक/समय की समस्या का समाधान करना होगा, क्योंकि यह केवल तिथियों के विरुद्ध कार्य करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL का उपयोग करके SQL सर्वर एजेंट जॉब कैसे चलाएं

  2. एसक्यूएल में उप क्वेरी का पुन:उपयोग कैसे करें?

  3. डेटाबेस मेल का स्क्रिप्टिंग सेटअप

  4. जावा से SQL सर्वर कॉम्पैक्ट संस्करण (CE) का उपयोग कैसे करें?

  5. SQL सर्वर के समतुल्य डेटाबेस दिखाएँ - sp_databases