Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 按列获取与分组相关的列_Sql Server_Sql Server 2008_Group By - Fatal编程技术网

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