Eai pessoal, td bem? Tô tentando criar uma sql que seja tipo uma lista de presença:
NOME | 01/06 | 02/06 | 03/06 | 04/06 | 05/06 | 06/06......
Fulano true false true true true true
Eu consegui algo parecido (com falhas), porém teria que refazer essa SQL todo mês e isso não é vantajoso… Eu até sei gerar uma lista dos dias do mês sem fazer isso manualmente, mas não sei como inserir isso na query abaixo:
Query:
SELECT * FROM crosstab(
$$SELECT id_funcionario, data, present
FROM controle_frequencia
WHERE to_date(data, 'DD/MM/YYYY') BETWEEN '01/06/2020'::date AND '06/06/2020'::date
ORDER BY 1,2$$
,$$SELECT unnest('{01/06/2020, 02/06/2020, 03/06/2020,
04/06/2020, 05/06/2020, 06/06/2020}'::date[])$$)
AS ct ("Funcionário" text, "01/06" bool, "02/06" bool, "03/06" bool
, "04/06" bool, "05/06" bool, "06/06" bool);
*2, 3 e 4 são ids dos funcionários
Código pra gerar os dias auto:
select dias::date from generate_series(
date_trunc('month',now()),
date_trunc('month',now()) + '1 month' - '1 day'::interval,
'1 day'
) as series(dias)
Esse é o meu controle_frequencia: