以下のクエリは、複数のターミナル(アウトレット)で従業員のログ(出席)情報を取得します。SQL Server:各従業員の最終レコードを選択
たとえば、1人の従業員が3日のうちに3つの店舗を訪れた場合、最後のログ情報(彼が最後に訪れた店舗)を取得したいと考えています。
問合せ:
select
[EmpCode],
Name,
max(convert(datetime, [LogDate])) as [Last Log date],
Outlet.abr as [Last Log Location]
from
AccessLog
inner join
GEmp on GEmp.EmpCode = AccessLog.EmployeeID
inner join
Outlet on Outlet.Code = AccessLog.TerminalID
where
InOut = '0'
group by
GEmp.EmpCode, Name, Outlet.abr
出力:
EmpCode Name Last Log date Last Log Location
--------------------------------------------------
362334 Emp1 10/4/2017 loc1
362334 Emp1 11/4/2017 loc2
362334 Emp1 5/30/2017 loc3
362336 Emp2 10/6/2017 loc1
362336 Emp2 11/4/2017 loc2
所望の出力:
EmpCode Name Last Log date Last Log Location
-------------------------------------------------
362334 Emp1 11/4/2017 loc2
362336 Emp2 11/4/2017 loc2
何を試しましたか? 'order By'と' select top1'を使うことを検討してください – Mzf