Предполагая, что вы на самом деле имеете в виду 14-й предыдущий рабочий день, основываясь на своем примере, и игнорируете праздничные дни, это просто функция date_sub с оператором case для дня недели.
case from_unixtime(unix_timestamp(event_date,'yyyyMMdd'),'u')
when 1 then regexp_replace(date_sub(from_unixtime(unix_timestamp(event_dt,'yyyymmdd' )),20),'-','')
when 2 then regexp_replace(date_sub(from_unixtime(unix_timestamp(event_dt,'yyyymmdd' )),20),'-','')
when 3 then regexp_replace(date_sub(from_unixtime(unix_timestamp(event_dt,'yyyymmdd' )),20),'-','')
when 4 then regexp_replace(date_sub(from_unixtime(unix_timestamp(event_dt,'yyyymmdd' )),20),'-','')
when 5 then regexp_replace(date_sub(from_unixtime(unix_timestamp(event_dt,'yyyymmdd' )),18),'-','')
when 6 then regexp_replace(date_sub(from_unixtime(unix_timestamp(event_dt,'yyyymmdd' )),18),'-','')
when 7 then regexp_replace(date_sub(from_unixtime(unix_timestamp(event_dt,'yyyymmdd' )),19),'-','')
end as new_date
Это предполагает Сб / вс следует рассматривать как понедельник. Если сб / вс должно быть как пятница, то используйте 19, 20.
Если вам нужно учитывать праздники, то вам нужно создавать таблицу календаря на каждый день. и обратите внимание, какие дни являются выходными, а затем это соединение с таблицей и еще несколько логик c, которые можно выяснить, если это так.