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