dポイントプレゼントキャンペーン実施中!

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 担当, 商品とやっても何故かエラーが出ます…
何か間違ってますでしょうか?

A 回答 (2件)

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の邪魔はしません。
    • good
    • 0

とりあえず、エラーコードを載せましょう。


また、再現するコードを載せましょう。

> 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は決まります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す