【发布时间】: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