DECLARE @SheduleWorkers TABLE
(
[Name] VARCHAR(250) ,
[IdWorker] VARCHAR(250) ,
[IdDepartment] INT ,
[IdDay] INT ,
[Day] VARCHAR(250)
);
INSERT INTO @SheduleWorkers
( [Name], [IdWorker], [IdDepartment], [IdDay], [Day] )
VALUES ( 'Sam', '001', 5, 1, 'Monday' ),
( 'Lucas', '002', 5, 2, 'Tuesday' ),
( 'Maria', '003', 5, 1, 'Monday' ),
( 'José', '004', 5, 3, 'Wednesday' ),
( 'Julianne', '005', 5, 3, 'Wednesday' ),
( 'Elisa', '006', 18, 1, 'Monday' ),
( 'Gabriel', '007', 23, 5, 'Friday' );
;
WITH cte
AS ( SELECT Name ,
Day ,
ROW_NUMBER() OVER ( PARTITION BY Day ORDER BY [IdWorker] ) AS rn
FROM @SheduleWorkers
)
SELECT [MONDAY] ,
[TUESDAY] ,
[WEDNESDAY] ,
[THURSDAY] ,
[FRIDAY] ,
[SATURDAY]
FROM cte PIVOT( MAX(Name) FOR day IN ( [MONDAY], [TUESDAY], [WEDNESDAY],
[THURSDAY], [FRIDAY], [SATURDAY] ) ) p
Conclusion:
MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY
Sam Lucas José NULL Gabriel NULL
Maria NULL Julianne NULL NULL NULL
Elisa NULL NULL NULL NULL NULL
- row_number , , .