In MS SQL Server 2014, I have the following EMPLOYEE table that tracks employee actions, such as hiring, leaves, rehiring, etc:
EMPID EMPNAME ACTION_DATE ACTION_TYPE
1234 JOHN SMITH 2021-05-01 HIRED
1234 JOHN SMITH 2021-05-01 HIRED
1234 JOHN SMITH 2021-07-31 TERMINATED
1236 JANE SMITH 2021-06-01 HIRED
1236 JANE SMITH 2021-06-15 TERMINATED
1236 JANE SMITH 2021-07-31 REHIRED
I need to:
- Pivot the action_type into COLUMN values
- Represent the action_type as a "1" if not null and 0 if null.
- Ensure duplicates are excluded, as they exist in the source table
- Static PIVOT is okay, since there's a limited number of ACTION_tYPE values
Desired outcome:
EMPID EMPNAME ACTION_DATE HIRED TERMINATED REHIRED
1234 JOHN SMITH 2021-05-01 1 1 0
1236 JANE SMITH 2021-06-15 1 1 1
I'm stuck on this. Here's a sample dataset, and code I've already built/tried. Any suggestions? Thanks!
WITH EMPLOYEES(EMPID, EMPNAME, ACTION_DATE, ACTION_TYPE )AS
(
SELECT 1234, 'JOHN SMITH', '2021-05-01', 'HIRED' UNION ALL
SELECT 1234, 'JOHN SMITH' , '2021-05-01', 'HIRED' UNION ALL
SELECT 1234, 'JOHN SMITH' ,'2021-07-31', 'TERMINATED' UNION ALL
SELECT 1236, 'JANE SMITH', '2021-06-01', 'HIRED' UNION ALL
SELECT 1236, 'JANE SMITH' ,'2021-06-15', 'TERMINATED' UNION ALL
SELECT 1236, 'JANE SMITH' ,'2021-07-31', 'REHIRED'
)
select * from EMPLOYEES
PIVOT (MAX(ACTION_TYPE)
FOR ACTION_TYPE IN ([HIRED],[TERMINATED],[REHIRED])) AS P1