

こんにちは、Makotoと申します。
SQLの副問い合わせで質問があるのですが、
現在のSQLは
CREATE OR REPLACE VIEW VIWTEST AS
SELECT
KOMOKU1,
KOMOKU2
(SELECT SUM(KOMOKU3) FROM TBL WHERE A = 1
(SELECT SUM(KOMOKU4) FROM TBL WHERE A = 1
(SELECT SUM(KOMOKU5) FROM TBL WHERE A = 1
FROM M_TBL;
という感じのSQLなのですが、副問い合わせの所
が見ているテーブルも条件も一緒なので1つにまとめたいのですが、うまくいきません。CURSORという関数があったのですが、VIEWでは使用できませんでした。なにかよい方法はないでしょうか?
開発環境は
oracle 9i(AIX)
pro*C/C++
でおこなっています。
No.3ベストアンサー
- 回答日時:
集合関数を使用していることから直積でも問題がないかと思います。
CREATE OR REPLACE VIEW VIWTEST AS
SELECT
A.KOMOKU1,A.KOMOKU2,B.KOMOKU3,B.KOMOKU4,B.KOMOKU5
FROM M_TBL A,
(SELECT SUM(KOMOKU1) KOMOKU1,
SUM(KOMOKU2) KOMOKU2,
SUM(KOMOKU3) KOMOKU3
FROM TBL WHERE A = 1) B
;
1999構文では
CREATE OR REPLACE VIEW VIWTEST AS
SELECT
A.KOMOKU1,A.KOMOKU2,B.KOMOKU3,B.KOMOKU4,B.KOMOKU5
FROM M_TBL A
CROSS JOIN
(SELECT SUM(KOMOKU1) KOMOKU1,
SUM(KOMOKU2) KOMOKU2,
SUM(KOMOKU3) KOMOKU3
FROM TBL WHERE A = 1) B
;
いかがでしょうか?
お返事ありがとうございました。
kazuho_gooさんに書いていただいたSQL
のような感じで、FROM句に複数の列が返る
副問い合わせを書き、それに名前をつけ
SELECT句で指定してやるとうまく取得することが
できました。
ありがとうございます。

No.1
- 回答日時:
外してたらごめんなさい。
CREATE OR REPLACE VIEW VIWTEST AS
SELECT
KOMOKU1,
KOMOKU2,
(SELECT SUM(KOMOKU3), SUM(KOMOKU4), SUM(KOMOKU5) FROM TBL WHERE A = 1)
FROM M_TBL;
で、単純に良いような気がするのですが・・・。
何故KOMOKU3~5をそれぞれ副問い合わせを分けているのですか?
お返事ありがとうございます。
はじめは私もそう思ってやってみたのですが、
上記の感じSQLを実行すると複数の問い合わせで
エラーになってしまいました。でいろいろ試行錯誤
した結果別々の副問い合わせになってしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
はじめまして!
-
PCC-S-02201エラーの対処を教え...
-
PL/SQL PLS-00103エラーについて
-
pro*c で pl/sql に変数を渡す...
-
PL/SQLのコンパイルエラーにつ...
-
データベースのカラムの型がCHA...
-
ORA-06502のエラー
-
「ORA-00907: 右カッコがありま...
-
シェルスクリプトでオラクルの...
-
無効なSQL文の具体例を教えてく...
-
ORA-12571パケット書き込みエラ...
-
マテリアライズドビューの更新...
-
オラクル表領域データファイル...
-
ORA-01843: 指定した月が無効で...
-
HAVING句でのBETWEEN演算子
-
【Oracle】リモートでのimpコマ...
-
ストアドファンクションの実行
-
ACCESSでパススルークエリにパ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
はじめまして!
-
PL/SQL PLS-00103エラーについて
-
「ORA-00907: 右カッコがありま...
-
ORA-01843: 指定した月が無効で...
-
ORA-06502のエラー
-
PCC-S-02201エラーの対処を教え...
-
シェルスクリプトでオラクルの...
-
PL/SQLによるCREATE TABLE後のI...
-
DATABSE LINKについて
-
PL/SQLのコンパイルエラーにつ...
-
エラーコードについて
-
SQLLOADER
-
sqlのエラーハンドリングについ...
-
ビューが作成できない
-
データベースのカラムの型がCHA...
-
ORA-12571パケット書き込みエラ...
-
PL-SQLでORA-01013エラー
-
PL/SQLでPLS-00201のエラー
おすすめ情報