トップページ >  SQL Server >  GROUP BY
初版2012/05/20: 最終更新日2012/08/01
  GROUP BY
目次
GROUP BY
GROUP BYでエラー
GROUP BY
SQL Serverは、Oracleとかなり違います。例えばOracleでは別名でGROUP BYを指定できますが、SQL Serverでは出来ません。

SELECT AAAA AS A
FROM TEST
GROUP BY A
上記はOracleでは構文は正しいですが、SQL Serverではエラーになります。
これをSQL Serverで正常に実行するには以下のように別名ではなくそのまま列名を指定します。

SELECT AAAA AS A
FROM TEST
GROUP BY AAAA
その他、以下のようなSQLの場合も同じです

SELECT SURYO + BARA_SURYO AS A
FROM TEST
GROUP BY SURYO + BARA_SURYO
このようにOracleばかり使用していると違和感がありますが、SQL ServerのGROUP BY句では別名は使用できません。

GROUP BYでエラー
SQL ServerのGROUP BYは非常に面倒くさいです。
GROUP BYを使用する場合は、SELECT句の全てのカラムを集計関数にする、またはGROUP BY句に含める必要があります。
以下はエラーです。

SELECT CASE WHEN PIECE_SU = 0 THEN
       MAX(PIECE_SU) & MAX(IRISU)
       ELSE 1 END AS PIECE_SU,
       ~~~~(その他の集計関数)
FROM   T_SYUKKA
GROUP BY ~~~
上記のCASE WHENでPIECE_SUというのがエラーになります。エラーメッセージは以下になります。

列~~は選択リスト内では無効です。この列は集計関数またはGROUP BY句に含まれていません。
要するにCASE WHENのPIECE_SUも集計関数にする必要があるという事です。