Oracle SQL


SELECT id, to_char(created_at, 'MM') AS created_month
FROM T_LOG
WHERE id = '1'
GROUP BY (id, created_month)
ORDER BY created_month;
とやったら

ERROR at line 4:
ORA-00904: "CREATED_MONTH": invalid identifier
と怒られた。
Oracle グループ関数 - dodobonのWiki
によると、

GROUP BY句
ORDER BY句との併用
通常,ORDER BY句はSELECT句で指定していない列を使用する事ができる.
しかし, GROUP BY句と一緒に使う場合は,GROUP BY句で指定したいずれかの列を使用しなければいけない.
ORDER BY 句は必ずSQL文の最後に指定しなければいけない. 
らしい・・・
※因みにPostgresでは普通に動きます。「どっちが優れている」じゃなくてどっちがSQL99に合っているかという問題ですが。多分規定されてないんだろうな。

それにしても今日は花粉が酷い。
薬で抑えているんですが、朝から(正確には昨日の夜から)くしゃみの連続で、ずっと目がしばしばしています。

メモ
Oracle(10g)のsqlplusについて質問です。 MySQLでいうshow datab.. - 人力検索はてな