SQLで副で問い合わせたときグループバイやDISTINCTがエラーになってしまいます。
何故なのか検討がつきません。
同じデータを持つ様々なデータベースでやってますがどれもエラーになります。
オラクルやMYSQLやpostgreSQLです。
SELECT * FROM TableName
WHERE
担当 IN (SELECT 担当 FROM TableName WHERE 売上品 = '竹輪') AND
担当 IN (SELECT 担当 FROM TableName WHERE 売上品 = '胡瓜') AND
売上品 IN ('竹輪','胡瓜')
;
これは普通に出来ます。
これに対して…
SELECT distinct 担当, 商品, 売上品 from…かGroup By 担当, 商品とやっても何故かエラーが出ます…
何か間違ってますでしょうか?
No.1ベストアンサー
- 回答日時:
SELECT 担当, 商品, count(*) FROM TableName
WHERE
担当 IN (SELECT 担当 FROM TableName WHERE 売上品 = '竹輪') AND
担当 IN (SELECT 担当 FROM TableName WHERE 売上品 = '胡瓜') AND
売上品 IN ('竹輪','胡瓜')
GROUP BY 担当, 商品
;
とか普通に通ると思いますけど?
・DISTINCTが、他の何かと矛盾する。
・GROUP BYが、他の何かと矛盾する。
のだと思いますよ。
ちなみに、担当 IN (SELECT 担当 FROM TableName WHERE 売上品 = '竹輪') のような
WHEREに指定するメンバーシップ検査が、GROUP BYやDISTINCTの邪魔はしません。
No.2
- 回答日時:
とりあえず、エラーコードを載せましょう。
また、再現するコードを載せましょう。
> SELECT distinct 担当, 商品, 売上品
> from…か
> Group By 担当, 商品
> とやっても何故かエラーが出ます
これをみるかぎりだと、select とgroup byの項目が
あっていないだけに見えますが?
こんな感じ?
>select distinct empno,ename ,count(*) from emp group by empno
> *
>行1でエラーが発生しました。:
>ORA-00979: GROUP BYの式ではありません。
このORA-xxxxが重要です。このエラーコードがわからない限り、何のエラーだか第三者にはわかりません。
根本の問題として、distinctとgroup byの使用目的は異なります。
・distinctは重複を省く。
・group byは集計を行う。
目的(仕様)をはっきりさせれば、おのずと使用するsqlは決まります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
oracleのimpdpでORA-39166
-
sqlplusで接続できない
-
Oracleですがsqlで質問です。 ...
-
【SQL】IN句内のサブクエリが重...
-
osqleditについて
-
CASLⅡ 文字データから数値デー...
-
Oracleデータベースの暗号化
-
ワークテーブルって何?
-
副問合せにLIKE文を使う方法は...
-
Oracle DBに接続できなくなりま...
-
MSDOS ソート sortf 使用方法
-
SQLで日付+時間で絞り込みたい
-
バッチファイルで複数フォルダ...
-
Oracle で文字列からタイムスリ...
-
Oracle 動的SQLでエラー
-
PL/SQLでフェッチでNULLの項目...
-
sqlで質問です。 Aテーブルは店...
-
SQLの中上級者へのレベルアップ...
-
SELECTによる表の変換方法を教...
-
開発対象となるアプリケーショ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サブクエリとDISTINCTGROUPBYの...
-
サブクエリで別の列から組み合...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
SELECTで1件のみ取得するには?
-
Accessで別テーブルの値をフォ...
-
ADO VBA 実行時エラー3021
-
select句副問い合わせ 値の個...
-
実績累計の求め方と意味を教え...
-
ファイル書込みで一行もしくは...
-
SELECTの結果で同一行を複数回...
-
GROUP BYを使ったSELECT文の総...
-
SQL文で右から1文字だけ削除す...
-
Excelで、改行がある場合の条件...
-
Excelでセルの書式設定を使用し...
-
レコードが存在しなかった場合
-
OracleのSQL*PLUSで、デー...
-
カレントレコードが無い事を判...
-
select insertで複数テーブルか...
-
アクセスでレポートの1印刷内...
おすすめ情報