这是我的查询:
select top 60 * from ABC_Sessions (nolock)
where EntryDate > '06-22-2012 23:59:59'
GROUP BY TargetedID
然后它给了我这个错误:
消息 8120,级别 16,状态 1,行 1 列“BI_Sessions.SessionID”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
这是我的查询:
select top 60 * from ABC_Sessions (nolock)
where EntryDate > '06-22-2012 23:59:59'
GROUP BY TargetedID
然后它给了我这个错误:
消息 8120,级别 16,状态 1,行 1 列“BI_Sessions.SessionID”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
查询中的*
扩展到表中的所有列。
select top 60 TargetedID, SessionID, ...
from ABC_Sessions (nolock)
where EntryDate > '06-22-2012 23:59:59'
GROUP BY TargetedID
SessionID
正如错误消息所述,选择没有聚合函数(例如)是无效的MAX
。
这会起作用:
select top 60 TargetedID, MAX(SessionID) AS MaxSessionID
from ABC_Sessions (nolock)
where EntryDate > '06-22-2012 23:59:59'
GROUP BY TargetedID
您使用了星号*
,但没有按表格中的列分组abc_sessions
。在没有任何聚合函数的情况下使用GROUP BY
对我来说看起来很奇怪。
你想看见什么?
您收到此错误的原因是您没有在您的 select 语句中使用 sum/average/count/max/min 或任何类似函数。一旦您使用其中任何一个,您将不会收到此错误。例如:
从 ABC_Sessions (nolock) 中选择前 60 个 TargetedID, MAX(EntryDate) where EntryDate > '06-22-2012 23:59:59' GROUP BY TargetedID