Sql 无法使用having子句,因为它未包含在聚合函数或group by子句中

Sql 无法使用having子句,因为它未包含在聚合函数或group by子句中,sql,Sql,我正试图完成这个问题,但遇到了一些麻烦。我收到 “列'DOG.DOB'在HAVING子句中无效,因为它未包含在聚合函数或GROUP BY子句中。” 错误。没有年龄栏。下面是一个示例和所需的输出。我也会在下面写下我的代码 select Name AS 'Dog Name', DATEDIFF(year, getdate(), DOB) AS 'Age' from DOG Having DATEDIFF(year, getdate(), DOB) > avg(DATED

我正试图完成这个问题,但遇到了一些麻烦。我收到

“列'DOG.DOB'在HAVING子句中无效,因为它未包含在聚合函数或GROUP BY子句中。”

错误。没有年龄栏。下面是一个示例和所需的输出。我也会在下面写下我的代码

select
    Name AS 'Dog Name',
    DATEDIFF(year, getdate(), DOB) AS 'Age'
from DOG
Having
    DATEDIFF(year, getdate(), DOB) > avg(DATEDIFF(year, getdate(), DOB))
ORDER BY AGE DESC

您使用的是什么数据库管理系统?这是相关的,无论何时使用SQL标记,也应该为特定的DBMS添加一个标记-如果将鼠标悬停在SQL标记上并读取显示的文本,它也会告诉您这一点。请编辑并添加该标记,以便我们可以尝试提供帮助。这里有一个
Age
列,因为您通过将
DATEDIFF(year,getdate(),DOB)
与之混叠来创建该列。您的作业要求您使用子查询-如果您遵循该子查询,您将不会拥有
(双关语)您当前尝试遇到的问题。提示:子查询用于选择平均年龄,其结果将用于外部查询的WHERE条件。