【发布时间】:2019-03-01 13:08:55
【问题描述】:
我有一些选择语句,当单独执行时会返回我需要的内容。 我想将所有这些选择语句组合成一个看起来像普通表格的表格。 我尝试了 UNION 但得到一个错误,说我需要相同数量的参数(显然是列字段),但这不是我想要的。 所以我尝试了这个(我的代码到目前为止)
SELECT Company_Code FROM Company
UNION
SELECT Founder FROM Company
UNION
SELECT CAST(COUNT(Company.id) as varchar(5)) as Number_of_LeadManagers
FROM Lead_Manager
LEFT JOIN Company
ON (Lead_Manager.Companyid = Company.id)
GROUP BY Company.id
UNION
SELECT COUNT(Company.id) as Number_of_SeniorManagers
FROM Senior_Manager
LEFT JOIN Company
ON (Senior_Manager.Companyid = Company.id)
GROUP BY Company.id
UNION
SELECT COUNT(Company.id) as Number_of_Managers
FROM Manager
LEFT JOIN Company
ON (Manager.Companyid = Company.id)
GROUP BY Company.id
UNION
SELECT COUNT(Company.id) as Number_of_Employees
FROM Employee
LEFT JOIN Company
ON (Employee.Companyid = Company.id)
GROUP BY Company.id
整个语句返回我想要的所有内容。 如果每个 select 语句单独运行,则获取我的代码,它会返回我想要的内容(总是返回两行) 我想要的是最终结果只需将所有这些选择语句结果放在一起,这样这将显示 2 行,无论选择语句返回多少列。
我想要澄清的想法 如果我执行
SELECT Company_Code,Founder FROM Company
我明白了
**Result1**
row 1 : C1 Monika
row 2 : C2 Samantha
(总是只有 2 行) 如果我执行
SELECT CAST(COUNT(Company.id) as varchar(5)) as Number_of_LeadManagers
FROM Lead_Manager
LEFT JOIN Company
ON (Lead_Manager.Companyid = Company.id)
GROUP BY Company.id
我明白了
**Result2**
row 1 : 1
row 2 : 1
其他选择语句基本相同,只是使用不同的表进行计数。 我想要的只是一个允许我将 Result1 和 Result2 放在一起的查询(以及其余的选择结果) 期望的最终结果
**Result3**
row 1 : C1 Monika 1
row 2 : C2 Samantha 1
PS.上周开始的 SQL 还在苦苦挣扎,顺便说一下这是一个家庭作业项目。 如果我的思维方式是错误的,请告诉我,但这就是我在大脑中的看法,无法完全弄清楚如何使用 SQL ;P
【问题讨论】:
-
我不确定您为什么无法解决该错误。所有查询都有一个结果,因此唯一的区别是返回一个 VARCHAR。如果您将其作为整数返回,则应该没有错误。如果您希望结果在所有结果上都具有整数,除了一些将是 VARCHAR 的记录之外,您将无法编写执行此操作的 any 查询。
-
您有示例数据吗?您希望您的结果是什么样的?如果您只想要 2 列,请将它们别名为相同的名称,尽管您可能会丢失一些数据上下文。如果使用不期望跨表重复,请使用
UNION ALL而不是UNION。 -
您想要每个
Company_Code的一行数据吗?使用Founder,然后计算各个位置? -
它是什么类型的 SQL Server?版本?
-
编辑了我的问题,希望能清楚明白啊哈.....Shawn 这正是我想要的最终结果......SQL Server 2017 社区
标签: sql sql-server