Как проставить в таблице 0 клиентам, в даты, когда они не приходили и 1, когда приходили? SQL

Есть таблица вида:

Дата Клиент Выручка
01.01.2021 Маша 100
03.01.2021 Маша 200

Как проставить в таблице 0 клиентам, в даты, когда они не приходили и 1, когда приходили? Чтобы получить таблицу вида:

Дата Клиент Приходил
01.01.2021 Маша 1
02.01.2021 Маша 0
03.01.2021 Маша 1

Ответы (1 шт):

Автор решения: Akina
WITH RECURSIVE
calendar AS ( SELECT MIN(`date`) datefrom, MAX(`date`) datetill
              FROM sourcetable 
              UNION ALL
              SELECT datefrom + INTERVAL 1 DAY, datetill
              FROM cte
              WHERE datefrom < datetill ),
users AS ( SELECT DISTINCT user
           FROM sourcetable )
SELECT users.user,
       calendar.datefrom `date`,
       sourcetable.`date` IS NULL attendance
FROM calendar
CROSS JOIN users
LEFT JOIN sourcetable ON users.user = sourcetable.user
                     AND calendar.datefrom = sourcetable.`date`;
→ Ссылка