我正在尝试使用下面的SQL代码创建“结果:Sabre已有12岁”的句子。
select
businessname+' is ' + cast(count(e.id)as varchar(11))
from
Department d
join
EmployeeDepartmentHistory EDH on edh.departmentid = D.departmentid
join
employee e on edh.id = e.id
group by
name
+' years old'
如果我要运行这段代码
select
businessname+' is ' + cast(count(e.id)as varchar(11))
from
Department d
join
EmployeeDepartmentHistory EDH on edh.departmentid = D.departmentid
join
employee e on edh.id = e.id
group by
name
我将获得“佩剑12”
但是我在获取“岁数”字符串结尾时遇到问题。
我收到包含完整代码的错误消息
信息8120,第16级,状态1,第4行
在选择列表中,“ HumanResources.Department.Name”列无效,因为它不包含在聚合函数或GROUP BY子句中。
答案 0 :(得分:1)
没有一些必填信息,例如:
提供适当的建议几乎没有困难。
因此,假设:
EmployeeDepartmentHistory是部门之间的桥梁表 和Employee表照顾到Many:Many之间的关系 部门和员工表
一个公司名称(无论它属于哪个表)都有 下有很多员工(e.id)
您正在尝试计算以下员工的人数(e.id) 每个公司名称
这将是正确的查询:
SELECT businessname+' is ' + CAST(COUNT(e.id) AS VARCHAR(11)) + ' years old'
FROM Department d
JOIN EmployeeDepartmentHistory EDH on edh.departmentid=D.departmentid
JOIN employee e on edh.id=e.id
GROUP BY businessname