老親介護に悩む30~60代の方へ
老親介護ねっと[老人ホーム編]
トップ 老人ホームの選び方 介護関連ニュース 新規オープンホーム情報 老人ホーム取材レポート お問い合わせ リンク集 Q&A

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

回答受付中の質問

なぜ構文エラーにならないのでしょうか?

oracle12cで下記のSQLを実行すると13という結果が返ってきます。
しかし、内側のSQLは構文エラーとなります。

Select sum_qty as "13日の金曜日" From
(
Select key,Sum(qty) sum_qty
From
(
Select 'a' key,1 qty from dual union all
Select 'a' key,2 qty from dual union all
Select 'b' key,10 qty from dual
)
)
なぜ13という結果が返ってくるのか理由を知りたいです。

投稿日時 - 2018-07-11 14:40:11

QNo.9517271

暇なときに回答ください

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

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

回答(3)

ANo.3

>いいえ違います。
数字を全部足すのであれば、「外側のSum」と「Group By」が必要です。
その記述がないにもかかわらず、なぜか加算されるのです。

あ、もちろんです。
oracleがバグっていますね。(処理が間違いですね)
中のSelectがエラーなら全体もエラーと出るのが正しいですから。

投稿日時 - 2018-07-11 19:14:17

補足

まぁ、そうですね。
バグということで、理解しました。

投稿日時 - 2018-07-12 09:33:06

ANo.2

数字を全部足しているだけですねw。

投稿日時 - 2018-07-11 17:18:15

補足

いいえ違います。
数字を全部足すのであれば、「外側のSum」と「Group By」が必要です。
その記述がないにもかかわらず、なぜか加算されるのです。

投稿日時 - 2018-07-11 17:54:26

ANo.1

oracleは私の環境にないので実験はできませんが、可能性として。

内部のSelectはエラーになるとのことですので
Select sum_qty as "13日の金曜日" From
(
”えらーだー、エラーと言ったらエラーだ”
)
というようなSelectになっている可能性がありますね。
13は真ん中のメッセージの一部かと。

投稿日時 - 2018-07-11 15:39:16

補足

真ん中のメッセージというは不明ですが、下記のように値を変えると、結果は5555という値が返ってきます。
Select sum_qty as "13日の金曜日" From
(
Select key,Sum(qty) sum_qty
From
(
Select 'a' key,444 qty from dual union all
Select 'a' key,111 qty from dual union all
Select 'b' key,5000 qty from dual
)
)

投稿日時 - 2018-07-11 16:02:07