SELECT
a.Name, a.About,
COUNT(b.Id) AS TotalCities,
SUM(b.NoOfDwellers) AS TotalCityDwellers
FROM
Countries a
LEFT JOIN
Cities b ON a.Id = b.CountryId
WHERE
a.Name LIKE '%some str%'
GROUP BY
a.Id
ORDER BY
a.Name ASC
此SQL返回错误:
Msg 8120,Level 16,State 1,Line 1
列'Countries.Name'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
答案 0 :(得分:6)
如果您的SELECT
带有GROUP BY
子句,则SELECT
列列中的每一列都必须 一个聚合({{1} },SUM
,COUNT
等),或者它必须在MAX
子句中。
您的GROUP BY
列表中的a.Name
和a.About
都有未由汇总处理的内容 - 因此,这两列必须出现在SELECT
子句中
GROUP BY
答案 1 :(得分:3)
在查询中包含group by
子句时,结果中的每一行代表共享相同值的列的整个行组。因此,您选择的每个项目必须是这些列之一,对它们进行基于行的操作或聚合函数。您似乎正在尝试根据b
的{{1}}和a
汇总name
的值。如果是这样,您应该相应地修改about
条款:
group by