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

अगली पंक्ति पर जाएं जब किसी कॉलम में कुछ मान हो (एसक्यूएल सर्वर 2008)

यह निर्धारित करने का एक अपेक्षाकृत कुशल तरीका है कि डेटा सही है - लगभग ठीक है। यह निर्धारित करेगा कि डेटा में "1" या "2" गुम हैं या नहीं। यह संस्करण निर्धारित नहीं करता है कि पहली आईडी "1" है, क्योंकि आपके प्रश्न में इसका उल्लेख नहीं है।

सबसे अच्छा समाधान lag() . का उपयोग करना है और lead() . हालाँकि, SQL Server 2008 इन कार्यों का समर्थन नहीं करता है। तो, आइए इसे एक गैप-एंड-आइलैंड के रूप में देखें। क्या किसी दिए गए id के लिए एक पंक्ति में 1 "1" या "2" से अधिक की कोई स्थिति है? ? निम्नलिखित कोड को इन विसंगतियों का पता लगाना चाहिए:

select id, inoutid, count(*) as num_in_row,
from (select t.*,
             row_umber() over (partition by id, inoutid order by date, hours, minute) as seqnum_ii,
             row_umber() over (partition by id order by date, hours, minute) as seqnum_i
      from t
     ) t
group by id, inoutid, (seqnum_i - seqnum_ii)
having count(*) > 1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या लिक्विबेस के 'जेनरेट चेंजलॉग' कमांड के लिए एकाधिक SQL Server 2008 स्कीमा निर्दिष्ट करने का कोई तरीका है?

  2. SQL सर्वर में फ़ाइलें संग्रहीत करना

  3. स्तंभ नाम या संख्या ... स्क्रिप्ट बनाने द्वारा बनाई गई तालिका में तालिका परिभाषा से मेल नहीं खाती। एक तालिका से दूसरी तालिका में पंक्तियों को सम्मिलित करते समय प्रदर्शित त्रुटि

  4. मैं उन सभी संग्रहीत कार्यविधियों का पता कैसे लगा सकता हूँ जो रिकॉर्ड सम्मिलित करते हैं, अद्यतन करते हैं या हटाते हैं?

  5. लिंक किए गए सर्वर पर पहचान डालने में विफल रहता है