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

एसक्यूएल सर्वर सन्निहित तिथियां - सीटीई, लूप, ... एस के बिना कई पंक्तियों को सन्निहित प्रारंभ और समाप्ति तिथि पंक्तियों में सारांशित करना

आप दोनों का लाभ उठा सकते हैं विंडो फ़ंक्शन और gaps-and-islands नामक अवधारणा का उपयोग . आपके मामले में, निकटवर्ती तिथियां द्वीप होंगी, और अंतराल स्वयं व्याख्यात्मक हैं।

मैंने नीचे दिए गए उत्तर को वर्बोज़ तरीके से लिखा है ताकि यह स्पष्ट हो सके कि क्वेरी क्या कर रही है, लेकिन यह संभवतः एक अलग तरीके से लिखा जा सकता है जो अधिक संक्षिप्त है। कृपया उत्तर में मेरी टिप्पणियों को देखें कि प्रत्येक चरण (उप-क्वेरी) क्या करता है।

--Determine Final output
select min(c.StartDate) as StartDate
, max(c.EndDate) as EndDate
from (
    --Assign a number to each group of Contiguous Records
    select b.ID
    , b.StartDate
    , b.EndDate
    , b.EndDatePrev
    , b.IslandBegin
    , sum(b.IslandBegin) over (order by b.ID asc) as IslandNbr
    from (
        --Determine if its Contiguous (IslandBegin = 1, means its not Contiguous with previous record)
        select a.ID
        , a.StartDate
        , a.EndDate
        , a.EndDatePrev
        , case when a.EndDatePrev is NULL then 1
               when datediff(d, a.EndDatePrev, a.StartDate) > 1 then 1
               else 0
          end as IslandBegin
        from (
            --Determine Prev End Date
            select tt.ID
            , tt.StartDate
            , tt.EndDate
            , lag(tt.EndDate, 1, NULL) over (order by tt.ID asc) as EndDatePrev
            from dbo.Table_Name as tt
            ) as a
        ) as b
    ) as c
group by c.IslandNbr
order by c.IslandNbr


  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. कॉलम द्वारा समूह और एकाधिक पंक्तियों को एक पंक्ति एकाधिक कॉलम में समूहित करें

  3. क्या गिनती (*) कभी भी शून्य हो सकती है?

  4. SQL सर्वर (T-SQL) में JSON कुंजी का नाम कैसे बदलें

  5. SQL 2005 के लिए एक अच्छा बल्क इंसर्ट XML श्रेडिंग उदाहरण खोज रहे हैं