在SQL Server中使用GROUP BY

Dmi*_*kin 2 sql-server sql-server-2008

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

SELECT DISTINCT 
    Transport.ID, Transport.Address 
FROM  
    Cars 
LEFT JOIN 
    Transport ON Cars.TransportFrom=Transport.ID 
ORDER BY 
    address
Run Code Online (Sandbox Code Playgroud)

现在我需要再添一个列:

SUM(CASE WHEN Active='True' THEN 1 ELSE 0 END) 
Run Code Online (Sandbox Code Playgroud)

但如果我这样查询,我会收到错误

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
Run Code Online (Sandbox Code Playgroud)

消息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
Run Code Online (Sandbox Code Playgroud)

Msg 156,Level 15,State 1,Line 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
Run Code Online (Sandbox Code Playgroud)

消息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
Run Code Online (Sandbox Code Playgroud)

消息8120,级别16,状态1,行1
列"Transport.address"在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.

如何使语法正确?

Rap*_*aus 5

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

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
Run Code Online (Sandbox Code Playgroud)