获取与GROUP BY列相关的列

时间:2011-09-04 17:24:46

标签: sql-server sql-server-2008 group-by

我想做以下事情。

SELECT aspnet_Users.UserName, aspnet_Membership.Email, count(*) as Activities
FROM aspnet_Users
     INNER JOIN Activities ON aspnet_Users.UserId = Activities.ActUserID
     INNER JOIN aspnet_Membership ON aspnet_Users.UserId = aspnet_Membership.UserId
     WHERE Activities.ActDateTime >= GETDATE()
     GROUP BY aspnet_Users.UserName
     ORDER BY Activities DESC

但这给了我一个错误。

  

列'aspnet_Membership.Email'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

我有点理解错误。我正在尝试选择不属于分组的列。

但是,aspnet_Membership.Email和aspnet_Users.UserId之间始终存在一对一的关系。那么我该如何实现呢?

2 个答案:

答案 0 :(得分:3)

变化:

GROUP BY aspnet_Users.UserId

要:

GROUP BY aspnet_Users.UserName, aspnet_Membership.Email

如果您不想退回,或者您认为不应该按 想要的列分组,为什么您认为您需要在分组中提及UserId列?回来。

答案 1 :(得分:0)

要选择一个列,它必须是group by子句或聚合,你可以考虑分组(aspnet_Users.UserName,aspnet_Membership.Email,aspnet_Users.UserId)。

我的猜测是可行的

相关问题