• 締切済み

複数レコードを横並び1レコードで抽出する方法

ORACLE10gを使用しています。 似た内容の質問があったので QNo.1828920:検索対象のデータが「複数レコード」を「1レコード」として獲得するSQL も見てみたのですが、実際には他にも抽出条件や抽出項目が多いので、 できればGROUP BYは使いたくないと思い、質問させていただきます。 ・TABLE)イメージ CD|NO|NM 10 | 0 | あ 10 | 1 | い 10 | 2 | う 10 | 3 | え ・前提 画面でCD:10およびNO:0~NO:2と範囲指定します。 ・求める結果 下記のように範囲指定したNO分、NMを横並びに抽出したいです。 10,あ,い,う ・考えた内容 VBを使用しているのでプログラム中で動的に抽出項目、FROM句、WHERE句を 追加しようと考えました。 TABLE.NOは2桁なので最大指定で0~99になる可能性があります。その場合FROM句のTABLE別名が99個に なってしまいますが、書き方として問題ないのか不安です。 何かアドバイスがありましたらお願いします。 ・SQL案 SELECT TABLE0.CD, For I = 0 To 2 TABLE & I.NM AS NM & I, Next K FROM For J = 0 To 2 TABLE TABLE & I, Next K WHERE TABLE0.CD = 10 AND For K = 0 To 2 TABLE & K.NO = K AND Next K

みんなの回答

回答No.2

No1です。すいません、ちょっと違うみたい。

karen237
質問者

お礼

アドバイスありがとうございました。 今日中に仕上げたかったので、自分で考えた方法でいくことにしました。

回答No.1

select CD ,decode(NO,0,NM,null) ,decode(NO,1,NM,null) ,decode(NO,2,NM,null) from table where cd = :cd and no between :no1 and :no2 decodeの部分を指定された条件で作成してあげれば良いのでは

関連するQ&A