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

ओवरलैपिंग दिनांक अंतराल मर्ज करें

मैं एक ही समाधान की तलाश में था और सिंगल ओवरलैपिंग रेंज रिकॉर्ड वापस करने के लिए ओवरलैपिंग डेटाटाइम को मिलाएं पर इस पोस्ट में आया था।

पैकिंग दिनांक अंतराल पर एक और सूत्र है।

मैंने विभिन्न दिनांक सीमाओं के साथ इसका परीक्षण किया, जिसमें यहां सूचीबद्ध तिथियां भी शामिल हैं, और यह हर बार सही ढंग से काम करती है।

SELECT 
       s1.StartDate,
       --t1.EndDate 
       MIN(t1.EndDate) AS EndDate
FROM @T s1 
INNER JOIN @T t1 ON s1.StartDate <= t1.EndDate
  AND NOT EXISTS(SELECT * FROM @T t2 
                 WHERE t1.EndDate >= t2.StartDate AND t1.EndDate < t2.EndDate) 
WHERE NOT EXISTS(SELECT * FROM @T s2 
                 WHERE s1.StartDate > s2.StartDate AND s1.StartDate <= s2.EndDate) 
GROUP BY s1.StartDate 
ORDER BY s1.StartDate 

नतीजा यह है:

StartDate  | EndDate
2010-01-01 | 2010-06-13
2010-06-15 | 2010-06-25
2010-06-26 | 2010-08-16
2010-11-01 | 2010-12-31


  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 सर्वर के साथ अंतिम पंक्ति को कैसे पढ़ें

  2. SQL सर्वर के लिए शीर्ष 5 डेटा मॉडलिंग उपकरण

  3. SQL सर्वर में VARCHAR/CHAR के बजाय हमें NVARCHAR/NCHAR का उपयोग कब करना चाहिए?

  4. शीर्ष खंड का उपयोग करके SQL सर्वर क्वेरी में लौटाई गई पंक्तियों को सीमित करें

  5. T-SQL का उपयोग करके किसी लिंक किए गए सर्वर पर तालिका बनाने के 2 तरीके