Query :
SELECT E.EMPID ,D.DT,to_char(D.DT,'Day') days ,case
when to_char(D.DT, 'fmday') = 'friday' then 'workday'
when to_char(D.DT, 'fmday') = 'saturday' then 'workday'
when to_char(D.DT, 'fmday') = 'monday' then 'workday'
when to_char(D.DT, 'fmday') = 'tuesday' then 'workday'
when to_char(D.DT, 'fmday') = 'wednesday' then 'workday'
when to_char(D.DT, 'fmday') = 'thursday' then 'workday'
else 'holiday' end work_days
,D.DT+DBMS_RANDOM.VALUE(0,0.25/24)+ ((H.FHR+(H.FMT/60)+DECODE(H.FAM,'PM',12,0))/24) INTIME,
D.DT+DBMS_RANDOM.VALUE(0,0.25/24)+ ((H.THR+(H.TMT/60)+DECODE(H.TAM,'PM',12,0))/24) OUTTIME
,E.ROWID
FROM EMP_SHIFT H, EMPL E,
(SELECT LEVEL LVL , (TO_DATE('01-Dec-22','DD-MON-RR')+LEVEL-1) DT
FROM DUAL conNect by level <= to_date('31-dec-22','DD-MON-RRRR')-TO_DATE('01-Dec-22','DD-MON-RRRR') +1 ) D
WHERE E.SHIFT = H.CD
I need to get null yellow highlighed cells like the image below
you can do something like this
SELECT E.EMPID ,D.DT,to_char(D.DT,'Day') days ,case
when to_char(D.DT, 'fmday') = 'friday' then 'workday'
when to_char(D.DT, 'fmday') = 'saturday' then 'workday'
when to_char(D.DT, 'fmday') = 'monday' then 'workday'
when to_char(D.DT, 'fmday') = 'tuesday' then 'workday'
when to_char(D.DT, 'fmday') = 'wednesday' then 'workday'
when to_char(D.DT, 'fmday') = 'thursday' then 'workday'
else 'holiday' end work_days ,
case
when to_char(D.DT, 'fmday') != 'friday'
or to_char(D.DT, 'fmday') != 'saturday'
or to_char(D.DT, 'fmday') != 'monday'
or to_char(D.DT, 'fmday') != 'tuesday'
or to_char(D.DT, 'fmday') != 'wednesday'
or to_char(D.DT, 'fmday') != 'thursday' then NULL
else D.DT+DBMS_RANDOM.VALUE(0,0.25/24)+ ((H.FHR+(H.FMT/60)+DECODE(H.FAM,'PM',12,0))/24) end INTIME,
case
when to_char(D.DT, 'fmday') != 'friday'
or to_char(D.DT, 'fmday') != 'saturday'
or to_char(D.DT, 'fmday') != 'monday'
or to_char(D.DT, 'fmday') != 'tuesday'
or to_char(D.DT, 'fmday') != 'wednesday'
or to_char(D.DT, 'fmday') != 'thursday' then NULL
else D.DT+DBMS_RANDOM.VALUE(0,0.25/24)+ ((H.THR+(H.TMT/60)+DECODE(H.TAM,'PM',12,0))/24) end OUTTIME
,E.ROWID
FROM EMP_SHIFT H, EMPL E,
(SELECT LEVEL LVL , (TO_DATE('01-Dec-22','DD-MON-RR')+LEVEL-1) DT
FROM DUAL conNect by level <= to_date('31-dec-22','DD-MON-RRRR')-TO_DATE('01-Dec-22','DD-MON-RRRR') +1 ) D
WHERE E.SHIFT = H.CD