找不到“选择列表中的列无效”的解决方法

时间:2019-02-23 16:07:13

标签: sql sql-server tsql

我有一个数据库,其中包含一些表,这些表包含有关不同经理及其公司和前辈的数据。有问题的两个表如下所示:

公司:

company_code  founder
C1            Monika
C2            Samantha

Lead_Manager:

lead_manager_code   company_code
LM1                 C1
LM2                 C2

我需要返回company_code,创始人和潜在顾客经理的总数。我有以下代码:

SELECT c.company_code, COUNT(lm.lead_manager_code) as lead_managers
FROM Lead_Manager lm
INNER JOIN Company c ON lm.company_code = c.company_code
GROUP BY c.company_code;

它返回company_code和总线索经理,但没有创始人。当我尝试此代码时:

SELECT c.company_code, c.founder, COUNT(lm.lead_manager_code) as lead_managers 
FROM Lead_Manager lm
INNER JOIN Company c ON lm.company_code = c.company_code
GROUP BY c.company_code;  

它引发“选择列表中的'Company.founder'列无效,因为它既不包含在聚合函数中也不在GROUP BY子句中。”我已仔细阅读了原因并了解了原因,但是找不到解决方法。

1 个答案:

答案 0 :(得分:3)

您需要在GROUP BY中包括所有不在聚合函数中的列:

SELECT c.company_code, c.founder, COUNT(lm.lead_manager_code) as lead_managers 
FROM Lead_Manager lm
INNER JOIN Company c ON lm.company_code = c.company_code
GROUP BY c.company_code, c.founder;