Sql server 按列获取与分组相关的列
我想做如下的事情Sql server 按列获取与分组相关的列,sql-server,sql-server-2008,group-by,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_Member
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之间始终存在一对一的关系。所以,我如何实现这个?< p>选择一个列,它必须在一个GROUPBY子句中,或者聚合起来,您可以考虑通过(ASPNET.U.S.UrrEnress,ASPNETHEngaseNeal.Email,ASPNETHUSOURS.USERID)分组。 我的猜测是它会起作用改变:
GROUP BY aspnet_Users.UserId
致:
不确定如果您不想返回,为什么您认为需要在分组中提及UserId列,或者为什么您认为不应该按您想返回的列分组。电子邮件和UserId之间的关系有什么关联?为什么你想选择电子邮件,但不想按它分组?很抱歉,我为使其正常工作而进行的一些不同编辑逐渐进入我的问题(现已更正)。是的,你的建议行得通。然而,我一点也不清楚怎么做。如果两个
GROUP BY
列之间存在一对一的关系,SELECT
ed列是否始终反映该单一关系?而且,如果两列之间没有一对一的关系,该语句会做什么?谢谢你给我额外的建议。我不想听你的问题。能否显示一些表示一对一关系的示例数据,以及一些“如果没有一对一关系”的示例数据?
GROUP BY aspnet_Users.UserName, aspnet_Membership.Email