締切済み

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

  • 暇なときにでも
  • 質問No.9517271
  • 閲覧数117
  • ありがとう数0
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 0% (0/3)

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という結果が返ってくるのか理由を知りたいです。

回答 (全3件)

  • 回答No.3

ベストアンサー率 19% (839/4396)

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

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

お礼率 0% (0/3)

まぁ、そうですね。
バグということで、理解しました。
投稿日時 - 2018-07-12 09:33:06
  • 回答No.2

ベストアンサー率 19% (839/4396)

数字を全部足しているだけですねw。
補足コメント
mokaid

お礼率 0% (0/3)

いいえ違います。
数字を全部足すのであれば、「外側のSum」と「Group By」が必要です。
その記述がないにもかかわらず、なぜか加算されるのです。
投稿日時 - 2018-07-11 17:54:26
  • 回答No.1

ベストアンサー率 19% (839/4396)

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

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

お礼率 0% (0/3)

真ん中のメッセージというは不明ですが、下記のように値を変えると、結果は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
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ