- ベストアンサー
存在するデータの一覧を出すには?
例えばあるテーブルのbangou(重複はない)という項目が 11 12 13 14 15 16 22 23 24 31 32 このように存在した時に 使用済み番号 11-16 22-24 31-32 このように3行表示するためのSQLってどうすれば可能でしょうか。 ポイントは ・連続した番号は1行で表現したい。 実際はデータが数万行あり、連続しているものが多いが、歯抜けも連続しているためです。 以上よろしくお願い致します。
- みんなの回答 (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);
お礼
回答どうもありがとうございました。 このSQLの形で確かに思惑のものが取得できました。 頭の中がパズル状態なので、中身を確認してみます。