SQL Identify Missing Data
You can do this using the EXCEPT operator to remove the weekdays worked from a CROSS JOIN query that returns all possible weekdays worked by each employee.

SELECT DISTINCT wr.employee, c.work_date
FROM cal c
CROSS JOIN work_record wr 
WHERE c.day_type = 'Weekday'
EXCEPT
SELECT employee, date_worked 
FROM work_record wr


DDL for creating the tables and data:

CREATE TABLE [cal](
    [work_date] [date] NULL,
    [day_type] [varchar](20) NULL
) ON [PRIMARY]
GO

CREATE TABLE [work_record](
    [date_worked] [date] NULL,
    [employee] [varchar](20) NULL
) ON [PRIMARY]
GO

INSERT [cal] ([work_date], [day_type]) 
VALUES (CAST(N'2020-02-10' AS Date), N'Weekday'),
(CAST(N'2020-02-11' AS Date), N'Weekday'),
(CAST(N'2020-02-12' AS Date), N'Weekday'),
(CAST(N'2020-02-13' AS Date), N'Weekday'),
(CAST(N'2020-02-14' AS Date), N'HOLIDAY'),
(CAST(N'2020-02-14' AS Date), N'Weekend'),
(CAST(N'2020-02-14' AS Date), N'Weekend')

INSERT [work_record] ([date_worked], [employee]) 
VALUES (CAST(N'2020-02-10' AS Date), N'john'),
(CAST(N'2020-02-10' AS Date), N'jimmy'),
(CAST(N'2020-02-10' AS Date), N'mary '),
(CAST(N'2020-02-11' AS Date), N'john '),
(CAST(N'2020-02-11' AS Date), N'jimmy'),
(CAST(N'2020-02-11' AS Date), N'mary '),
(CAST(N'2020-02-12' AS Date), N'john '),
(CAST(N'2020-02-12' AS Date), N'mary '),
(CAST(N'2020-02-13' AS Date), N'jimmy'),
(CAST(N'2020-02-13' AS Date), N'mary '),
(CAST(N'2020-02-14' AS Date), N'jimmy')