• ベストアンサー

存在するデータの一覧を出すには?

例えばあるテーブルのbangou(重複はない)という項目が 11 12 13 14 15 16 22 23 24 31 32 このように存在した時に 使用済み番号 11-16 22-24 31-32 このように3行表示するためのSQLってどうすれば可能でしょうか。 ポイントは ・連続した番号は1行で表現したい。 実際はデータが数万行あり、連続しているものが多いが、歯抜けも連続しているためです。 以上よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.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);

bonnumaman
質問者

お礼

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

関連するQ&A