【问题标题】:Using GROUP BY in SQL Server在 SQL Server 中使用 GROUP BY
【发布时间】:2015-06-17 06:10:32
【问题描述】:

通过这个查询,我得到了 2 列不同的值

SELECT DISTINCT 
    Transport.ID, Transport.Address 
FROM  
    Cars 
LEFT JOIN 
    Transport ON Cars.TransportFrom=Transport.ID 
ORDER BY 
    address

现在我需要用 sum 再添加一列:

SUM(CASE WHEN Active='True' THEN 1 ELSE 0 END) 

但是如果我做类似的查询会出错

SELECT DISTINCT 
    Transport.ID, Transport.Address, 
    SUM(CASE WHEN Active = 'True' THEN 1 ELSE 0 END)
FROM 
    Cars 
LEFT JOIN 
    Transport ON Cars.TransportFrom = Transport.ID 
ORDER BY 
    address

消息 8120,第 16 级,状态 1,第 1 行
选择列表中的“Transport.ID”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

SELECT 
    Transport.ID, Transport.Address, 
    SUM(CASE WHEN Active = 'True' THEN 1 ELSE 0 END)
FROM 
    Cars 
LEFT JOIN 
    Transport ON Cars.TransportFrom = Transport.ID 
ORDER BY 
    address
GROUP BY 
    ID

消息 156,第 15 级,状态 1,第 5 行
关键字“GROUP”附近的语法不正确。

SELECT 
    Transport.ID, Transport.Address, 
    SUM(CASE WHEN Active = 'True' THEN 1 ELSE 0 END)
FROM 
    Cars 
LEFT JOIN 
    Transport ON Cars.TransportFrom = Transport.ID 
GROUP BY 
    ID
ORDER BY 
    address

消息 209,第 16 级,状态 1,第 4 行
不明确的列名“ID”。

SELECT 
    Transport.ID, Transport.Address, 
    SUM(CASE WHEN Active = 'True' THEN 1 ELSE 0 END)
FROM 
    Cars 
LEFT JOIN 
    Transport ON Cars.TransportFrom = Transport.ID 
GROUP BY 
    Transport.ID
ORDER BY 
    address

消息 8120,第 16 级,状态 1,第 1 行
选择列表中的“Transport.address”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

如何让语法正确?

【问题讨论】:

  • 您需要在GROUP BY子句中添加Transport.Address。

标签: sql-server sql-server-2008


【解决方案1】:

嗯,错误信息很清楚,不是吗?

SELECT Transport.ID, Transport.Address, SUM(CASE WHEN Active='True' THEN 1 ELSE 0 END)
FROM Cars 
LEFT JOIN Transport ON Cars.TransportFrom=Transport.ID 
--add all the fields from select clause which are not in an aggregation function
GROUP BY Transport.ID, Transport.Address 
ORDER BY address

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    相关资源
    最近更新 更多