Sql server 在SQLServer中使用GROUPBY

Sql server 在SQLServer中使用GROUPBY,sql-server,sql-server-2008,Sql Server,Sql Server 2008,通过这个查询,我得到了两列不同的值 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 
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
Msg 8120,第16级,状态1,第1行
列“Transport.ID”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中

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

Msg 209,16级,状态1,第4行
列名称“ID”不明确

Msg 8120,第16级,状态1,第1行
列“Transport.address”在选择列表中无效,因为它不包含在聚合函数或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 
--add all the fields from select clause which are not in an aggregation function
GROUP BY Transport.ID, Transport.Address 
ORDER BY address

您需要在
groupby
子句中添加
Transport.Address
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
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
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