- ベストアンサー
条件付GROUP BY句の記述方法
テーブルAには 列A 数値列 ID列(主キー) の 3つの列があるのですが このテーブルのデータを列AでGROUP BYする際 ID列のデータが5と10の物だけGROUP BYの 対象にしたいのですが そのまま流すとGROUP BYでIDが指定されてません、 HAVING句では無効です。 とメッセージが出ます、 かと言ってID列をGROUP BYすると 主キーなのでSUMが5と10の物に分かれてしまいます。 これはどのようにして回避すればいいのでしょうか? SELECT 列A,SUM(数値列) FROM テーブルA GROUP BY 列A HAVING ID列 IN (5,10) 環境 Win2000 SQLServer2000
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
集計前に条件を絞り込むのであれば、WHEREを使います SELECT 列A,SUM(数値列) FROM テーブルA WHERE ID列 IN (5,10) GROUP BY 列A ちなみにHAVINGは、集計結果に対して絞込みを行うときに使います。 たとえば、集計結果が1000以上のものを取りたいときは、 SELECT 列A,SUM(数値列) FROM テーブルA GROUP BY 列A HAVING SUM(数値列) >= 1000 という具合です
その他の回答 (1)
- hidebu-
- ベストアンサー率53% (45/84)
SELECT 列A,SUM(数値列) FROM (SELECT * FROM テーブルA WHERE ID列 IN (5,10) ) GROUP BY 列A 試してないので間違ってたらすいません^^; 要求仕様をみていたら集計する前に条件を確定したいようなので、集計する前に条件指定してやればいいかと。
お礼
集計する前に対象データを指定しておく必要があったのですね 回答していただき有難う御座いました。
お礼
集計前に条件を指定して実行するのですね HAVINGの使い方を勘違いしてました 回答有難う御座いました。