0

グループ、番号で並べ替えられた 2 つの列を持つテーブル:

group_id | number 
---------+--------
   1     |  101
   1     |  102
   1     |  103
   1     |  106
   2     |  104
   2     |  105
   2     |  107

次の出力を取得するには、どの SQL クエリを作成する必要がありますか。

group_id | number_from | number_to  | total 
---------+-------------+------------+-------
   1     |     101     |    103     |   3
   1     |     106     |    106     |   1
   2     |     104     |    105     |   2
   2     |     107     |    107     |   1
4

3 に答える 3

1

これがSQL Fiddelのデモです

以下はスクリプトです

create table Temp(A int,B int);

insert into temp values (1,101);
insert into temp values (1,102);
insert into temp values (1,103);
insert into temp values (1,106);
insert into temp values (2,104);
insert into temp values (2,105);
insert into temp values (2,107);


Select T2.A "group_id",
        Min(T2.B) "number_from",
        Max(T2.B) "number_to",
        Max(T2.E) "total"
from
(
  select *,(B-C) D,
      rank() over 
      (PARTITION by T.A,(B-C) order by T.A,T.B) E,
      rank() over
      (order by T.A,(B-C)) F
  from
  (select A,B,row_number() 
         over (order by (select 0)) C 
   from temp) T
) T2
group by T2.A,T2.D,T2.F
order by 1,2
于 2013-06-21T10:22:00.443 に答える