2016-02-01 17 views

回答

0

您不提供樣本數據。所以我試用了你提供的輸出表格截圖的要求。

create table #val(id int, name varchar(40), checktime datetime) 


insert into #val values (1,'a', '2015-01-01 09:30:00.000') 

insert into #val values (2,'b', '2015-01-01 10:30:00.000') 

insert into #val values (1,'a', '2015-01-01 10:30:00.000') 

insert into #val values (2,'b', '2015-01-01 11:30:00.000') 


select id, name, FORMAT(CAST(checkin AS DATETIME),'hh:mm tt') AS StartTime, FORMAT(CAST(checkout AS DATETIME),'hh:mm tt') AS Endtime 
from 
(
select id, name,min(checktime) checkin, max(checktime) checkout 
from 
#val 
group by id,name )a 

(注意:我使用的SQL Server 2012中它具有格式化功能轉換日期時間爲AM和PM)

+0

它的工作非常感謝您的寶貴答覆。 @bmsqldev –

+0

如果它提供瞭解決方案,請接受它作爲答案 – bmsqldev

+0

如果有多個checkin和chechout,該怎麼辦? –

1

我已經開發考勤軟件,衝壓計時都簽入和簽出會按照用戶標識存儲在單列datetime數據類型中。我需要在一列中分開檢查並通過用戶標識檢查另一列。 SELECT CHECKINOUT.USERID,Ent_Staff.StaffName,CHECKINOUT.CHECKTIME FROM Ent_Staff INNER JOIN USERINFO ON USERINFO.BADGENUMBER=Ent_Staff.Bio_Id INNER JOIN Mas_Shift ON Mas_Shift.Shift_Id=Ent_Staff.Shift_Id INNER JOIN CHECKINOUT ON CHECKINOUT.USERID=USERINFO.USERID WHERE checkinout.CHECKTIME>= '01/27/2016' AND checkinout.CHECKTIME < '01/28/2016' AND checkinout.USERID IN (9,15) ORDER BY checkinout.CHECKTIME[i had posted the table view also][1]