使用HAVING时'无效列名'

New*_*ton 3 sql sql-server having

我正在使用Microsoft SQL SERVER 2014.

以下是我的查询

SELECT type, SUM(calories) AS total_calories
FROM exercise_logs
GROUP BY type
HAVING total_calories > 150;
Run Code Online (Sandbox Code Playgroud)

我得到了错误

消息207,级别16,状态1,行2无效的列名称'total_calories'.

这是一个非常简单的表(我是sql和学习它的新手).谁能指出我做错了什么?谢谢.

Tus*_*har 6

Aggregation 是必需的,因为您无法访问别名 total_calories

SELECT   type,SUM(calories) AS total_calories 
FROM     exercise_logs 
GROUP BY type 
HAVING   SUM(calories) > 150;
Run Code Online (Sandbox Code Playgroud)


jar*_*rlh 6

您还可以将GROUP BY查询包装在派生表中:

select type, total_calories 
FROM (
    SELECT type, SUM(calories) AS total_calories
    FROM exercise_logs
    GROUP BY type
) AS dt
WHERE total_calories > 150
Run Code Online (Sandbox Code Playgroud)