【发布时间】:2017-12-03 09:23:17
【问题描述】:
我正在尝试为每位员工创建一个表,该表将为每位员工提供在家/不在/在家工作的信息。为此,我正在编写一个使用 JOINS 获取记录的 SQL 查询。但是,我正在编写 3 个分别返回数据的 Join 语句。如何编写一个查询,在一个 (SELECT) 查询中返回 3 个后续连接的结果?以下是 Join 语句:
Select EmployeeId, Employees.Name, COUNT(*) [Absent]
From Attendances
Left Join Employees
On Employees.EmployeeId = Attendances.EmpID And Attendances.IsAbsent = 1 and Employees.Name = 'John'
Where CAST(Attendances.InDateTime as Date) >= '2016-06-19 10:00:00.000'
Group By EmployeeId, Employees.Name
select Employees.Name, COUNT(*) [Present]
from Employees
Inner Join Attendances
On Employees.UserId = Attendances.EmpID and Attendances.IsAbsent = 0
Where CAST(Attendances.InDateTime as Date) >= '2017-06-19 10:00:00.000' and Employees.Name='John'
Group By Employees.Name
select Employees.Name, COUNT(*) [WorkFromHome]
from Employees
Inner Join Attendances
On Employees.UserId = Attendances.EmpID and Attendances.IsWorkFromHome = 1
Where CAST(Attendances.InDateTime as Date) >= '2017-06-19 10:00:00.000' and Employees.Name='John'
Group By Employees.Name
我得到的当前输出是: 姓名|现在,姓名|缺席,姓名|在家工作 但我希望它为: 姓名|现在|缺席|在家工作
【问题讨论】:
-
你可以使用
UNION ALL -
试过联合,但结果是成行的..我不想要那个..
-
啊,我想你的意思是把它们组合成列
Name, Absent, Present, WorkFromHome -
@Sami 是的:)
-
使用
Subqueries而不是UNION ALL
标签: sql sql-server join