あなたの問題はスコープの問題です。GROUP BY
句はステートメントのテーブル式の一部であるため、句の前に評価されますSELECT
。つまり、射影です。これは、投影されたエイリアスがグループ化時に使用できないことを意味します。これは1つの解決策です
SELECT DAY, MONTH, errormessage
FROM (
SELECT TO_CHAR(dateTime, 'DD') DAY, TO_CHAR(dateTime, 'MM') MONTH, errormessage
FROM log
WHERE (...)
)
GROUP BY MONTH, DAY, errormessage
これは別です:
SELECT TO_CHAR(dateTime, 'DD') DAY, TO_CHAR(dateTime, 'MM') MONTH, errormessage
FROM log
WHERE (...)
GROUP BY TO_CHAR(dateTime, 'MM'), TO_CHAR(dateTime, 'DD'), errormessage
非標準の動作
一部のデータベース(MySQL、PostgreSQLなどを含む)では、GROUP BY
句のプロジェクションから列エイリアスを参照できることに注意してください。より厳密なSQL方言(Oracleなど)では、これは不可能ですが