select * from 
(select to_char(sysdate,'yyyy') xxx
from dual d)
group by xxx你的别名在group by 的时候 还没有生效呢

解决方案 »

  1.   

    找到了    SELECT 陳述式的邏輯處理順序
        下列步驟顯示 SELECT 陳述式的邏輯處理順序或繫結順序。這個順序決定何時將某一個步驟中定義的物件提供給後續步驟的子句使用。例如,如果查詢處理器可以繫結至 (存取) FROM 子句中定義的資料表或檢視表,則這些物件及其資料行就可供所有後續步驟使用。 反之,由於 SELECT 子句是步驟 8,因此之前的子句無法參考該子句中定義的任何資料行別名或衍生資料行。不過,後續子句 (例如 ORDER BY 子句) 可以參考這些資料行別名或衍生資料行。請注意,實際執行的陳述式是由查詢處理序所決定,因此順序可能與此清單有所不同。        FROM
            ON
            JOIN
            WHERE
            GROUP BY
            WITH CUBE 或 WITH ROLLUP
            HAVING
            SELECT
            DISTINCT
            ORDER BY
            TOP簡單一句話WHERE的執行順序比SELECT優先,自然也就不認得SELECT裡的Alias了。
      

  2.   

    解决方法就是直接group by  to_char(sysdate,'yyyy')