2012-06-29 53 views

回答

5

既然你想对你的聚合函数有一个谓词,你可以使用HAVING子句

SELECT ORDER#, SUM(PAIDEACH * QUANTITY) AS TOTAL 
    FROM ORDERITEMS 
GROUP BY ORDER# 
HAVING SUM(PAIDEACH * QUANTITY) > 39.9 
ORDER BY TOTAL DESC; 
2

如果你想使用别名在WHERE条款,那么你可以把另一个SELECT内查询:

SELECT * 
FROM 
(
    SELECT ORDER#, SUM(PAIDEACH * QUANTITY) AS TOTAL 
    FROM ORDERITEMS 
    GROUP BY ORDER# 
) x 
WHERE x.TOTAL > 39.9 
ORDER BY x.TOTAL DESC; 
0

order by 2 desc(以列数字的引用从1开始)

有没有必要写嵌套查询,甚至把一个having子句查询。请参阅带数字的列,但不要忘记在更改查询时更改它;-)

+1

错误来自'where',而不是'order by';列别名在那里有效。 –

+0

时间让我学会再读一次...... – ipip