こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

同一レコードを複数取り出したい

以下のようなテーブルがあったとます。
<AA table>
A B
------
01 2
02 3
03 4

A = '01'のレコードを取り出す場合には、
select * from AA where A = '01';

A B
------
01 2

で取れますが、このときBの値を判断して、以下のようにBの数だけ同一レコードを取り出したいと思います


(where A = '01'ならば)
A B
------
01 2
01 2

(where A = '03'ならば)
A B
------
03 3
03 3
03 3
03 3

このように、同一レコードを条件によって複数取り出す処理をSQLで記述することはできるのでしょうか?

投稿日時 - 2004-08-05 10:18:08

QNo.951536

すぐに回答ほしいです

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

こんにちわ
Oracle9i 以降であれば、パイプライン関数を使用する事で
お望みの結果が得られるかと思います。
パラメータ (Bの値) によって適当な数をパラメータの数だけ返すパイプライン関数を
定義してはどうでしょう?

詳細は、「PL/SQL ユーザーズガイド・およびリファレンス」
を参照して下さい。

投稿日時 - 2004-08-08 15:33:16

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

 B欄に、あまり大きな値が入っていると大変ですがBが比較的小さいなら、ということで。

 <B TABLE>
B
--
1
2
2
3
3
3
4
4
4
4


という表を作成します。
これがあれば、後は、次のSQLで・・・

select AA.A, AA.B from AA, B where AA.B=B.B;

これで、一応、お望みの結果になるかと。綺麗ではありませんけどね=^・・;=

投稿日時 - 2004-08-06 22:30:47