• ベストアンサー

SQL文のGROUP化について

いつも勉強させて頂いています。 環境 VB2008 SQLSERVER2005 条件を指定してグループ化をしたいのですが方法をご教授くださいませ。 例) 項目  値 AAA  100 BBB  200 CCC  100 DDD  300 上記データの場合 AAAとBBBを合算して値を表示(AS 'AB') CCCとDDDを合算して表示(AS 'CB') 表示後) 項目 値   平均値  AB  300 150  CD  400 200  いろいろと試していますが、いまいちうまくいきません。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

すぐに思いついた方法です。 ほかにもやり方は、いろいろあるとは思いますが。 SELECT 項目, SUM(値) AS 値, AVG(値) AS 平均値 FROM ( SELECT CASE WHEN 項目 = 'AAA' OR 項目 = 'BBB' THEN 'AB' ELSE 'CD' END AS 項目, 値 FROM TABLE ) GROUP BY 項目 上記でどうでしょうか? 動作確認までは、していませんので。

その他の回答 (2)

  • kikujack
  • ベストアンサー率47% (17/36)
回答No.3

A、B、C、D行だけではないと、その二つの方法うまくいけないんです。

AS400VBNET
質問者

お礼

皆様がたのご回答有難う御座います。 A,B,C,D以外のデータもあり、その中からパラメータで指定して抜き出す 作業を考えています。 対象データとそれ以外(ELSE)の形で取ってくることはできましたが、 kikujackさんの言うように対象データのみの場合は、エラーがでました。 その為、とってきた後に、表示させないようにして対応しました。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

こんな感じですか。 SELECT 'AB' As 項目,Sum(値) As 値,Ave(値) As 平均値   FROM テーブル WHERE 項目 In ('AAA','BBB') UNION ALL SELECT 'CD' As 項目,Sum(値) As 値,Ave(値) As 平均値   FROM テーブル WHERE 項目 In ('CCC','DDD')

関連するQ&A