我想按服务名称对我的所有记录进行分组,我在 SQL Server 中使用此查询但它抛出错误
select max(c.service_id) as service_id, a.ser_id, b.UserID,
SQRT(POWER(69.1 * ( @latitude - b.Latitude),2) + POWER(69.1 * ( b.Longitude - @longitude ) * COS(b.Longitude / 57.3), 2)) as distance,
c.service_name
from aspnet_bawe_services a
left join aspnet_user_account b on a.bawe_id = b.UserID
left join aspnet_services_app c on a.ser_id = c.service_id
group by c.service_name
错误
Msg 8120, Level 16, State 1, Procedure app_service_list, Line 24
Column 'aspnet_bawe_services.ser_id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
最佳答案
您应该对不在聚合函数中的每一列进行分组,或者对这些列使用聚合函数
先这样
select max(c.service_id) as service_id, a.ser_id ,b.UserID,SQRT(POWER(69.1 * ( @latitude - b.Latitude),2) + POWER(69.1 * ( b.Longitude - @longitude ) * COS(b.Longitude / 57.3), 2)) as distance,c.service_name
from aspnet_bawe_services a
left join aspnet_user_account b on a.bawe_id=b.UserID
left join aspnet_services_app c on a.ser_id=c.service_id
group by c.service_name, a.ser_id,b.UserID,b.Latitude,b.Longitude
或者第二个这样
select
max(c.service_id) as service_id,
max(a.ser_id), max(b.UserID),
sum(SQRT(POWER(69.1 * ( @latitude - b.Latitude),2) + POWER(69.1 * ( b.Longitude - @longitude ) * COS(b.Longitude / 57.3), 2))) as distance,
c.service_name
from
aspnet_bawe_services a
left join
aspnet_user_account b on a.bawe_id = b.UserID
left join
aspnet_services_app c on a.ser_id = c.service_id
group by
c.service_name
关于c# - Group by 在 SQL Server 中抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44039300/