こんにちは、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で質問しましょう!
似たような質問が見つかりました
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
PL/SQLのコンパイルエラーにつ...
-
「ORA-00907: 右カッコがありま...
-
PL/SQL PLS-00103エラーについて
-
はじめまして!
-
SQLLOADER
-
ORA-06502のエラー
-
PL/SQLによるCREATE TABLE後のI...
-
PCC-S-02201エラーの対処を教え...
-
PL-SQLでORA-01013エラー
-
データベースのカラムの型がCHA...
-
SQLのSP2-エラーについて
-
ORACLEのUPDATE処理
-
[PL/SQL]セキュリティ違反でエラー
-
エラー「単一グループのグルー...
-
PL/SQLでPLS-00201のエラー
-
sqlのエラーハンドリングについ...
-
外部ライブラリのロード中にエ...
-
ACCESSでパススルークエリにパ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
PL/SQLのコンパイルエラーにつ...
-
「ORA-00907: 右カッコがありま...
-
PL/SQL PLS-00103エラーについて
-
はじめまして!
-
シェルスクリプトでオラクルの...
-
PCC-S-02201エラーの対処を教え...
-
ストアドファンクションの実行
-
HAVING句でのBETWEEN演算子
-
ORA-01843: 指定した月が無効で...
-
ORA-06502のエラー
-
DATABSE LINKについて
-
PL/SQLでPLS-00201のエラー
-
sqlのエラーハンドリングについ...
-
PL/SQLによるCREATE TABLE後のI...
-
ACCESSでパススルークエリにパ...
-
SQLLOADER
-
PL-SQLでORA-01013エラー
-
無効なSQL文の具体例を教えてく...
おすすめ情報