【发布时间】:2017-03-08 07:04:37
【问题描述】:
我有一种情况,员工有 time-in 和 time-out 但他们被保存到一个类型为 [in =1 ,out = 2] 的列中,我需要获取单个员工的时间(进出)在一行中,用 Time-In、Time-Out 标题分隔。
这是我的表格示例,
CREATE TABLE #Employee
(
empid int,
name varchar(20),
age int
)
CREATE TABLE #TIMEINOUT
(
id int,
empid int,
timeinout datetime,
[type] tinyint
)
INSERT INTO #Employee values(1,'Benny',35)
INSERT INTO #Employee values(2,'Algo',32)
INSERT INTO #TIMEINOUT VALUES(1,1,'2017-03-08 06:00:00 AM',1) -- (Type 1 = IN , 2 = Out)
INSERT INTO #TIMEINOUT VALUES(2,1,'2017-03-08 05:00:00 PM',2) -- (Type 1 = IN , 2 = Out)
INSERT INTO #TIMEINOUT VALUES(3,2,'2017-03-08 07:00:00 AM',1) -- (Type 1 = IN , 2 = Out)
INSERT INTO #TIMEINOUT VALUES(4,2,'2017-03-08 09:00:00 PM',2) -- (Type 1 = IN , 2 = Out)
SELECT * FROM #Employee INNER JOIN #TIMEINOUT ON #Employee.empid = #TIMEINOUT.empid
Select #Employee.empid,#Employee.name,#Employee.age,GETDATE() as TimeIN,GETDATE() as TimeOUT from #Employee
DROP TABLE #Employee
DROP TABLE #TIMEINOUT
谁能帮忙简化查询?
【问题讨论】:
-
预期输出应该是
-
@Chanukya..我已经编辑并选择了预期结果
-
您需要按 empid 和按日期执行此操作吗?
-
类型是什么意思? 1是IN,2是OUT?
-
@reds 无论如何,我需要员工在单行输出中出勤,子表中有两行
标签: sql sql-server time-and-attendance