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

समूह बंद संख्या

यह आपके उदाहरण के लिए काम करता है, मुझे बताएं कि क्या यह अन्य डेटा के लिए काम नहीं करता है

create table #Range 
(
  [Start] INT,
  [End] INT
)

insert into #Range ([Start], [End]) Values (1, 8)
insert into #Range ([Start], [End]) Values (9, 13)
insert into #Range ([Start], [End]) Values (14, 20)
insert into #Range ([Start], [End]) Values (20, 25)
insert into #Range ([Start], [End]) Values (30, 42)
insert into #Range ([Start], [End]) Values (42, 49)
insert into #Range ([Start], [End]) Values (60, 67)



;with RangeTable as
(select
    t1.[Start],
    t1.[End],
    row_number() over (order by t1.[Start]) as [Index]
from
    #Range t1
where t1.Start not in (select 
                      [End] 
               from
                  #Range
                  Union
               select 
                  [End] + 1
               from
                  #Range
               )
)
select 
    t1.[Start],
    case 
   when t2.[Start] is null then
        (select max([End])
                     from #Range)
       else
        (select max([End])
                     from #Range
                     where t2.[Start] > [End])
end as [End]    
from 
    RangeTable t1
left join 
    RangeTable t2
on
    t1.[Index] = t2.[Index]-1 

drop table #Range;


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

  2. SQL सर्वर केवल नवीनतम मान का उपयोग करके विशिष्ट पंक्तियों का चयन करता है

  3. क्या पहचान कॉलम के लिए एक अद्वितीय पहचानकर्ता (GUID) या एक बड़ा उपयोग करना बेहतर है?

  4. MVC4:UserIsInRole - SQL सर्वर डेटाबेस से कनेक्ट करने में असमर्थ

  5. संग्रहित प्रक्रिया में बहु-मान दिनांक पैरामीटर?