यह निर्धारित करने का एक अपेक्षाकृत कुशल तरीका है कि डेटा सही है - लगभग ठीक है। यह निर्धारित करेगा कि डेटा में "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