次のような情報を含む Oracle 10g のテーブルがあります。
SQL> select * from t_test;
INFO CODIGO GRUPO
---------- ---------- ----------
101 190 VTOS
100 130 VTOS
102 140 VTOS
GRUPO='VTOS' を持つすべての行を抽出し、それらの行を列に転置したいと思います。CODIGO の値はあらかじめ決められているため (その列に格納できる値はわかっています)、次のようなものを取得したいと考えています。
INFO_190 INFO_130 INFO_140
-------- -------- --------
101 100 102
たとえば、いくつかのサブクエリでそれを実行できることはわかっています。
SELECT (SELECT info
FROM t_test
WHERE codigo = 190 AND grupo = 'VTOS') info_190,
(SELECT info
FROM t_test
WHERE codigo = 130 AND grupo = 'VTOS') info_130,
(SELECT info
FROM t_test
WHERE codigo = 140 AND grupo = 'VTOS') info_140
FROM DUAL
しかし、もっと効率的な方法を見つけたいと思います。誰でもそれを行う方法を提案できますか?