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子句中.
如何使语法正确?
那么错误信息很清楚,不是吗?
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)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |