add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
WITH Person(person_id)
AS
(
SELECT 10001 UNION ALL
SELECT 10002 UNION ALL
SELECT 10003 UNION ALL
SELECT 10004
),

Dates(date_type,dat)
AS
(
SELECT 'PUBLIC_HOLIDAY','2020-04-10 00:00:00.000' UNION ALL
SELECT 'PUBLIC_HOLIDAY','2020-04-13 00:00:00.000'
),
Absence(person_id,dat,absence_type)
AS
(
SELECT 10001,'2020-04-10 00:00:00.000','HOLIDAY' UNION ALL
SELECT 10001,'2020-04-13 00:00:00.000','HOLIDAY' UNION ALL
SELECT 10002,'2020-04-10 00:00:00.000','HOLIDAY' UNION ALL
SELECT 10003,'2020-04-13 00:00:00.000','HOLIDAY'
)


SELECT Person.person_id,Dates.dat,ISNULL(Absence.dat, 'Not Bokked')
FROM Dates
CROSS JOIN Person
LEFT JOIN Absence ON Person.person_id = Absence.person_id AND Dates.dat = Absence.dat
WHERE Dates.date_type = 'PUBLIC_HOLIDAY'


person_id dat (No column name)
10001 2020-04-10 00:00:00.000 2020-04-10 00:00:00.000
10002 2020-04-10 00:00:00.000 2020-04-10 00:00:00.000
10003 2020-04-10 00:00:00.000 Not Bokked
10004 2020-04-10 00:00:00.000 Not Bokked
10001 2020-04-13 00:00:00.000 2020-04-13 00:00:00.000
10002 2020-04-13 00:00:00.000 Not Bokked
10003 2020-04-13 00:00:00.000 2020-04-13 00:00:00.000
10004 2020-04-13 00:00:00.000 Not Bokked