我想得到的结果是
开始号码         结束号码         单位id                       状态
1                   20                   1                   0
21                  40                   2                 0
41                  61                  3                 0
81              100                 4                        0
-------------------------------------
是每格20个为一组的
用SQL语句能办到吗?
求SQL语句,或是存过程用游标也可以

解决方案 »

  1.   

    --这样
    declare @tablea table (号码 int,单位 int ,状态 int)
    insert @Tablea values(1,1,0)
    insert @Tablea values(20,1,0)
    insert @Tablea values(21,2,0)
    insert @Tablea values(40,2,0)
    insert @Tablea values(41,3,0)
    insert @Tablea values(60,3,0)
    insert @Tablea values(61,4,0)
    insert @Tablea values(80,4,0)
    insert @Tablea values(81,5,0)
    insert @Tablea values(100,5,0)
    select min(号码) 开始号码,max(号码) 结束号码,单位,状态
    from @tablea
    group by 单位,状态/*
    开始号码        结束号码        单位          状态          
    ----------- ----------- ----------- ----------- 
    1           20          1           0
    21          40          2           0
    41          60          3           0
    61          80          4           0
    81          100         5           0(所影响的行数为 5 行)
    */
      

  2.   

    --分组即可select min(号码ID) as '开始号码',max(号码ID)as '结束号码',单位id,状态 from 表A
    group by 单位id,状态
      

  3.   

    select min(号码ID) as 开始号,max(号码ID) as 结束号,单位,状态 from 表A group by 单位,状态
      

  4.   

    各位兄弟谢谢你们的精彩的SQL语句,但现在发生了变化
    就是说所有的记录中的单位和状态都是一样的
    记录如下
    1-20 
    22-25
    26-80
    80-81
    83-100
    .............
    就是说记录号是连续的就为一组