Sql server 2008 这个简单的SQL Server 2008 R2查询有什么问题?产生“非布尔型表达式…”错误

Sql server 2008 这个简单的SQL Server 2008 R2查询有什么问题?产生“非布尔型表达式…”错误,sql-server-2008,having-clause,Sql Server 2008,Having Clause,我试图从满足两个条件的表响应中选择一行,并且在update_datetime字段中有最近的日期。实际上,我需要Responses行中的所有字段,但我只需要它的response\u uuid 我在下面这个查询中的尝试产生了一个错误,即在预期条件的上下文中指定了一个非布尔类型的表达式。我到底做错了什么 select response_uuid, MAX(update_datetime) from Responses where question_id=2115 and session_uuid

我试图从满足两个条件的表响应中选择一行,并且在update_datetime字段中有最近的日期。实际上,我需要Responses行中的所有字段,但我只需要它的response\u uuid

我在下面这个查询中的尝试产生了一个错误,即在预期条件的上下文中指定了一个非布尔类型的表达式。我到底做错了什么

select response_uuid, MAX(update_datetime) 
from Responses 
where question_id=2115
and session_uuid in (
  select session_uuid from Sessions
  where client_uuid = '552782A2-4DC6-4715-B278-4C7F5F867975'
)
group by response_uuid
having MAX(update_datetime)
我在互联网上看到过类似的问题,但我不知道问题是什么。谢谢你的帮助

p、 这实际上是一个大得多的查询的一小部分,如果你想看到整个内容,或者如果看到所有内容都会有帮助的话。

问题在于:

having MAX(update_datetime)
这需要一个逻辑上为真或假的布尔表达式,比如MAXupdate\u datetime=。你没有表达式,它可以计算为真或假,因为你没有什么可比较的


从查询的外观来看,除非有我没有看到的东西,否则您可以完全删除HAVING。最大聚合上的GROUP BY应该为您提供所需的内容。为了清晰起见,我建议您将结果列命名为MAXupdate\u datetime。

查看所有内容会很有帮助。我应该说这将是一个更大的查询的一部分,如果我能让这部分工作正常的话。你能看到我在这段代码中遇到的错误的原因吗?+1我也看不出这里有什么意义,否则它会被用来设置聚合上的约束。如果OP只是想要排名前1的话,他应该说我在添加最后一段后看到OP可能想在后面添加列,这意味着可能需要添加列。如果是这样的话,它可能会在这里向OP提供一个子查询提示,类似于让MAXx=selectmaxx fromtable,WHERE。。。我得到的反馈帮助我在更大的查询中找到了我需要做的事情。非常感谢所有响应者\