如何选择多列但只能按一分组?

Nay*_*ori 20 sql-server group-by

我有一个问题group by,我想选择多列但只按一列分组。下面的查询是我尝试过的,但它给了我一个错误。

SELECT Rls.RoleName,Pro.[FirstName],Pro.[LastName],Count(UR.[RoleId]) as [Count]
from [b.website-sitecore-core].[dbo].[aspnet_UsersInRoles] UR
inner join [b.website-professional-au].[dbo].[Profile]  Pro
on UR.UserId = Pro.Id
inner join [b.website-sitecore-core].[dbo].[aspnet_Roles] Rls
on Rls.RoleId = UR.RoleId
inner join [b.website-professional-au].[dbo].[Gender] Gn
on gn.Id = pro.GenderId
GROUP BY Rls.RoleName;
Run Code Online (Sandbox Code Playgroud)

Luk*_*der 22

在 SQL Server 中,您只能选择属于GROUP BY子句的列,或任何其他列上的聚合函数。我已经在博客中详细介绍了这一点。所以你有两个选择:

  1. 将附加列添加到GROUP BY子句中:

    GROUP BY Rls.RoleName, Pro.[FirstName], Pro.[LastName]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在相关列上添加一些聚合函数:

    SELECT Rls.RoleName, MAX(Pro.[FirstName]), MAX(Pro.[LastName])
    
    Run Code Online (Sandbox Code Playgroud)

第二种解决方案主要是一种解决方法,并表明您应该使用查询修复更一般的问题。