【问题标题】:Time and Attendance Query考勤查询
【发布时间】:2014-01-07 10:11:05
【问题描述】:

有人请帮我,整理一下我的考勤SQL查询 我有一个带有字段 ID、日期、时间、StaffNo、TranType 的 SQL 表(这将是两个值 1,2 1 = in 2=out)我想要这样的输出 id Date StaffNo In-time Out-Time

【问题讨论】:

  • 你试过什么??????
  • 您的问题无法理解。
  • 感谢 Ammar 和 Pouya 的回复

标签: sql sql-server subquery


【解决方案1】:

这是您要找的吗?

表声明

create table #tab  (id int primary key ,[date] date,[time] varchar(10),staffno int,trantype int)
insert into #tab values (1,'2013-01-01','12:31:09',101,1),(2,'2013-01-01','12:51:09',101,2),(3,'2013-01-01','09:31:09',102,1)
select * from #tab

根据我的理解需要示例代码。

select 
x.date,x.StaffNo,max(x.timeIn) timeIn,max(x.timeOut) timeOut
from
(   
    select 
    StaffNo,[date],
    timeIn = (case when trantype = 1 then ([time]) else '' end),
    timeOut = (case when trantype = 2 then ([time]) else '' end)

    from
    #tab
) x
group by 
x.date,x.StaffNo

【讨论】:

  • 亲爱的 Kishore,感谢您的回答,是的,这是我正在寻找的,但是时间显示不正确,我需要添加一些格式吗?
  • 您可以与结果集分享您的查询。
  • SELECT date, pin, MAX(timeIn) AS timeIn, MAX(timeOut) AS timeOut FROM (SELECT pin, date, (CASE WHEN transtype = 7 THEN ([etime]) ELSE '' END) AS timeIn, (CASE WHEN transtype = 8 THEN ([etime]) ELSE '' END) AS timeOut FROM dbo.Transactions1) AS x GROUP BY date, pin
  • 亲爱的 Kishore 请在 SQL 上面找到我应用的 PIN 是员工编号
  • 和 Transtype 7 =IN 和 Transtype=8 是 OUT,我正在寻找员工每天工作的小时数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 2016-07-20
相关资源
最近更新 更多