dポイントプレゼントキャンペーン実施中!

例えばあるテーブルのbangou(重複はない)という項目が
11
12
13
14
15
16
22
23
24
31
32

このように存在した時に
使用済み番号
11-16
22-24
31-32
このように3行表示するためのSQLってどうすれば可能でしょうか。
ポイントは
・連続した番号は1行で表現したい。
実際はデータが数万行あり、連続しているものが多いが、歯抜けも連続しているためです。

以上よろしくお願い致します。

A 回答 (1件)

こんなのはどうでしょうか?



select a.bangou || '-' || b.bangou
from(select a.bangou,row_number() over(order by a.bangou) rbangou
from tbl a
where not exists(select * from tbl b where a.bangou - 1 = b.bangou)) a
left join
(select a.bangou,row_number() over(order by a.bangou) rbangou
from tbl a
where not exists(select * from tbl b where a.bangou + 1 = b.bangou)) b
on (a.rbangou = b.rbangou);
    • good
    • 0
この回答へのお礼

回答どうもありがとうございました。
このSQLの形で確かに思惑のものが取得できました。
頭の中がパズル状態なので、中身を確認してみます。

お礼日時:2011/05/19 14:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!