1

please help.. please see example data below and the desired output..

Data:

EmployeeID    Date        In          Out
00001         01/01/2018 | 07:00 AM | 05:00 PM
00001         01/02/2018 | 07:00 AM | 05:00 PM
00001         01/03/2018 | 07:00 AM | 05:00 PM
00002         01/01/2018 | 07:00 AM | 05:00 PM
00002         01/02/2018 | 07:00 AM | 05:00 PM
00002         01/03/2018 | 07:00 AM | 05:00 PM

Desired Output

EmployeeID    01/01/2018         |  01/02/2018         |  01/03/2018
00001         07:00 AM - 05:00PM |  07:00 AM - 05:00PM |  07:00 AM - 05:00PM
00002         07:00 AM - 05:00PM |  07:00 AM - 05:00PM |  07:00 AM - 05:00PM
Genebert
  • 70
  • 11

1 Answers1

2

Use PIVOT:

WITH Src AS
(
  SELECT * FROM (VALUES 
  ('00001' ,'01/01/2018', '07:00 AM', '05:00 PM'),
  ('00001' ,'01/02/2018', '07:00 AM', '05:00 PM'),
  ('00001' ,'01/03/2018', '07:00 AM', '05:00 PM'),
  ('00002' ,'01/01/2018', '07:00 AM', '05:00 PM'),
  ('00002' ,'01/02/2018', '07:00 AM', '05:00 PM'),
  ('00002' ,'01/03/2018', '07:00 AM', '05:00 PM')) T(EmployeeID,[Date],[In],[Out])
)
SELECT * FROM
(SELECT EmployeeID, [Date], [In]+' - '+[Out] [In] FROM Src) T
PIVOT (MAX([In]) FOR [Date] IN ([01/01/2018],[01/02/2018],[01/03/2018])) AS P
Paweł Dyl
  • 8,888
  • 1
  • 11
  • 27
  • how can i dynamically call something like this sir.. `declare @xxx nvarchar(200) = '01/01/2018'` `select @xxx from pivot` – Genebert Sep 12 '18 at 08:36