c# - Group by 在 SQL Server 中抛出错误

标签 c# sql sql-server database

我想按服务名称对我的所有记录进行分组,我在 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/

相关文章:

sql-server - 如何在 Angular 中将同步调用变成异步调用?

python - MS SQL 无效的对象名称

c# - .NET:如何将 mp3 或 wav 文件转换为 .flac

c# - Null-Coalescing 运算符结果的隐式转换

mysql - 使用 where 类中的相同表更新表

sql - 在分区上使用 row_number() 或 dendense_rank() 的计算列

asp.net - 一个池中可以保留多少个连接(最大)?

c# - 文件 "obj\Debug\android\bin\packaged_resources"不存在。在 Windows 8.1 上的 Visual Studio 2015 Xamarin 跨平台中

c# - 排名标识符无效

mysql - 如何为 MySQL 中的每个不同项目选择随机结果