お世話になっています。
現在下記のようなSQLを組んでいます。
ビュー1の集計結果
UNION ALL
ビュー2の集計結果
UNION ALL
ビュー3の集計結果
実行結果 例
年月 人数 金額
201104 3 20000
201105 2 10000
201104 1 5000
GROUP BY句で年月を集計したビューをUNION ALLでつないでいるため、
当然のように同じ年月が何度も出てくるため、テストがしづらくなっています。
やりたいこととしては、さっきの実行結果をさらに年月で集計することを
考えています。
年月 人数 金額
201104 4 25000
201105 2 10000
対策として、下記のように集計したビューをUNION ALLでつないだ結果を
さらに集計するSQLを作りました。
SELECT
FROM(
ビュー1の集計結果
UNION ALL
ビュー2の集計結果
UNION ALL
ビュー3の集計結果
)
GROUP BY
その結果、下記のエラーが発生しました。
ORA-00935:グループ関数のネスト・レベルが深すぎます。
環境はoracle11gです。
あとは、SQLのFROM句の()の部分をビューとして作成し、
更にそのビューを呼び出して集計するくらいしか思いつかないです。
今回作ろうとしてるのはテスト用のSQLのため、SQL文と実行結果を残したいので、
できればビューやプロシージャーは作らずに、SQLのみで作成したいと考えています。
何か良い方法はありますでしょうか?
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
この回答への補足
早々と回答ありがとうございます。
グループ関数は2回までしか使っていません。
あくまで、ビューAの集計結果とビューBの集計結果で集計がやりたいだけですので、
2回です。
No.3
- 回答日時:
これじゃダメですか?
SELECT
TO_CHAR(V_SYORI_YM, 'YYYYMM') AS "年月" ,
SUM(V_A_CHAG),
SUM(V_B_CHAG),
SUM(V_C_CHAG),
SUM(V_ALL_CHAG)
FROM
(
SELECT
V_SYORI_YM,
V_A_CHAG,
V_B_CHAG,
V_C_CHAG,
V_ALL_CHAG
FROM
V_001
WHERE
V_CRT_DTS >= TO_DATE('20110401', 'YYYYMMDD') AND
V_CRT_DTS < TO_DATE('20120401', 'YYYYMMDD')
UNION ALL
SELECT
V_SYORI_YM,
V_A_CHAG,
V_B_CHAG,
V_C_CHAG,
V_ALL_CHAG
FROM
V_002I
WHERE
V_SYORI_YM >= TO_DATE('20110401', 'YYYYMMDD') AND
V_SYORI_YM < TO_DATE('20120401', 'YYYYMMDD')
)
GROUP BY
TO_CHAR(V_SYORI_YM, 'YYYYMM');
No.2
- 回答日時:
> ビュー1の集計結果
> UNION ALL
> ビュー2の集計結果
> UNION ALL
> ビュー3の集計結果
のビューのSQLの概略と
> SELECT
> FROM(
> ビュー1の集計結果
> UNION ALL
> ビュー2の集計結果
> UNION ALL
> ビュー3の集計結果
> )
> GROUP BY
の実際の記述全体を提示できますか?
この回答への補足
全体の記述は下記のとおりです。
そのまま転載するわけにはいかないので、ビュー名、項目名等は変更してあります。
SELECT "処理年月" AS "年月" ,SUM("調定額_A") ,SUM("調定額_B)" ,SUM("調定額_C)" ,SUM("調定額_合計)"
FROM (
SELECT SUBSTR(TO_CHAR(V_SYORI_YM,'YYYYMMDD'),1,6) AS "処理年月"
, SUM(V_A_CHAG) AS "調定額_A" , SUM(V_B_CHAG) AS "調定額_B"
, SUM(V_C_CHAG) AS "調定額_C" , SUM(V_ALL_CHAG) AS "調定額_合計"
FROM V_001
WHERE TO_DATE(TO_CHAR(V_CRT_DTS,'YYYYMMDD'),'YYYYMMDD') >= TO_DATE('20110401','YYYYMMDD')
AND TO_DATE(TO_CHAR(V_CRT_DTS,'YYYYMMDD'),'YYYYMMDD') < TO_DATE('20120401','YYYYMMDD')
GROUP BY SUBSTR(TO_CHAR(V_SYORI_YM,'YYYYMMDD'),1,6)
UNION ALL
SELECT SUBSTR(TO_CHAR(V_SYORI_YM,'YYYYMMDD'),1,6) AS "処理年月" , SUM(V_A_CHAG) AS "調定額_A" , SUM(V_B_CHAG) AS "調定額_B"
, SUM(V_C_CHAG) AS "調定額_C" , SUM(V_ALL_CHAG) AS "調定額_合計"
FROM V_002I
WHERE V_SYORI_YM >= TO_DATE('20110401','YYYYMMDD')
AND V_SYORI_YM < TO_DATE('20120401','YYYYMMDD')
GROUP BY SUBSTR(TO_CHAR(V_SYORI_YM,'YYYYMMDD'),1,6)
)
GROUP BY "処理年月" AS "年月"
FROM()の中身がビューの集計結果をUNIONALLでつないだものです。
内容はGROUPBY句で年月を指定して、SUMで集計してるだけのシンプルなものです。
今回は、これを更にもう1度集計し、同じ年月が複数回出てくるのを阻止しようとしています。
そのため、集計は2回行ってますが、2回ではoracleのエラーにはひっかからないはずなのですが、
そこがよくわかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelで、社外秘(閲覧のみ)と表示され、共有者が編集出来ないのですが 4 2023/06/20 17:54
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- SQL Server 2つのSQL(Access)の結果[時刻,カウント数]を結合して集計する方法 1 2022/04/06 22:57
- Excel(エクセル) 【Excel質問】別シートにある複数の同型の表から、同じ行項目にある数字を集計する 4 2023/02/16 00:14
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- 統計学 ファンネルプロット(ファネルプロット)について。 現在統計学について勉強している者です。 文献を集め 1 2022/04/22 19:21
- Excel(エクセル) EXCELピボットテーブル関数について 2 2023/04/10 20:35
- 政治 コンピューターで政党支持のアンケートをするのって、結果にどんな影響が出るでしょう? 5 2023/03/22 17:49
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
一番好きな「クリスマスソング」は?
街に出ればクリスマスソングを聞かない日はないくらい、 いろんな曲がかかっていますよね。 あなたが一番好きな「クリスマスソング」を教えてください!
-
治せない「クセ」を教えてください
なくて七癖という言葉どおり、人によっていろいろなクセがありますよね。 あなたには治せないクセがありますか?
-
集合写真、どこに映る?
あなたが集合写真を撮られるとき、画角のどのあたりにいることが多いですか? 私は振り返ってみると右の端にいることが多い気がします。
-
我がまちの「給食」自慢を聞かせてっ!
富山県の給食には「ベニズワイガニ」が出る、、、なんて話を聞いたことがあります。 日本全国「え、給食にそれ出るの!?」な驚きメニューがまだまだあるはず!
-
unionの結果は集計はできないですよね。。。。
Oracle
-
3つ以上のテーブルをUNIONするのは現時的でないでしょうか?
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UNION ALLでつなげた複数ビュー...
-
SQLで、あるグループの集計を行...
-
小数点のある数値で整数部のみ...
-
文字列の集計的な結合(文字列の...
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
UPDATEで既存のレコードに文字...
-
PostgreSQLのtimestamp型で時間...
-
データ削除とSQL*Loaderでのイ...
-
sqlに記述できない文字
-
テーブル名が可変の場合のクエ...
-
truncate tableを使って複数の...
-
既存データをINSERT文にして出...
-
timestamp が空のデータを除い...
-
テーブル定義書(Oracle) 【IX】...
-
T-SQLで任意の箇所で強制終了す...
-
2つのテーブルをLIKE演算子のよ...
-
ACCESSのVBAにてExcelに行...
-
既にテーブルが存在する場合の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字列の集計的な結合(文字列の...
-
UNION ALLでつなげた複数ビュー...
-
case whenとsum関数の併用について
-
CASE文内での計算
-
SQLにて列の値を一まとめにして...
-
フラグをたてるってどういうこ...
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
truncate tableを使って複数の...
-
既存データをINSERT文にして出...
-
PostgreSQLのtimestamp型で時間...
-
オラクルのUPDATEで複数テーブル
-
テーブル名が可変の場合のクエ...
-
右向き、左向きの速度が最大と...
-
エラーを起こす方法
-
selectの単純繰り返し
-
SELECTした結果に行番号を求めたい
-
timestampのデータはどのように...
おすすめ情報