sql语法有什么问题

时间:2016-01-07 08:10:07

标签: sql sql-server select sql-server-2012 syntax-error

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子句中。

2 个答案:

答案 0 :(得分:6)

如果您的SELECT带有GROUP BY子句,则SELECT列列中的每一列都必须 一个聚合({{1} },SUMCOUNT等),或者它必须在MAX子句中。

您的GROUP BY列表中的a.Namea.About都有未由汇总处理的内容 - 因此,这两列必须出现在SELECT子句中

GROUP BY

答案 1 :(得分:3)

在查询中包含group by子句时,结果中的每一行代表共享相同值的列的整个行组。因此,您选择的每个项目必须是这些列之一,对它们进行基于行的操作或聚合函数。您似乎正在尝试根据b的{​​{1}}和a汇总name的值。如果是这样,您应该相应地修改about条款:

group by