【问题标题】:Creating a sentence from multiple tables in SQL在 SQL 中从多个表创建一个句子
【发布时间】:2019-06-15 22:40:58
【问题描述】:

我正在尝试使用 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

我会得到“Sabre 12 岁”

但我在最后获取“岁”字符串时遇到问题。

我收到带有完整代码的错误消息

消息 8120,第 16 级,状态 1,第 4 行
列 'HumanResources.Department.Name' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。

【问题讨论】:

  • 您需要将+' years old' 部分放在顶行的末尾,而不是放在无意形成group by 子句一部分的底部。

标签: sql sql-server-2008 subquery


【解决方案1】:

没有一些必需的信息,例如:

  1. 表的结构,哪些表有哪些列
  2. 这些表是如何相互关联的,
  3. 您要获取的内容(例如,此处的“企业名称”表示什么)

提供适当的建议变得不难了。

所以,假设:

  1. EmployeeDepartmentHistory 是 Department 之间的桥梁表 和Employee表照顾Many:Many之间的关系 部门和员工表

  2. 一个企业名称(无论它属于哪个表) 它下有许多员工(e.id)

  3. 您正在尝试计算员工人数 (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

【讨论】:

  • @Ricardo 如果有帮助请告诉我。如果有帮助,您能否为答案投票?
猜你喜欢
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多