Buenas tardes lista, intento armar una planillas de asistencia mensual de personas teniendo una tabla de marcaciones del personal hice una función en plpgsql para obtener la asistencia, pero no he podido añadir los días sábados y domingos en la planilla la funcion es la siguiente:
CREATE OR REPLACE FUNCTION controlasistencia.asistenciamesfuncionario(vmes integer, vgestion integer, vidbiometrico integer) RETURNS SETOF record AS $BODY$ DECLARE fila RECORD; marcaciones RECORD; diatexto text; dia integer; fechasabado date; fechadomingo date; hora time;finde boolean; BEGIN FOR marcaciones in select * from crosstab('SELECT biofechahora::date,nivel,to_char(biofechahora, ''HH12:MI:SS'')::time FROM controlasistencia.biometrico where mes='||vmes||' and anio='||vgestion||' and codigobiometrico='||vidbiometrico, 'select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 union select 10 union select 11 union select 12 order by 1') as (fecha date,d1 time,d2 time,d3 time,d4 time,d5 time, d6 time,d7 time,d8 time,d9 time,d10 time,d11 time,d12 time) LOOP SELECT date_part('dow',marcaciones.fecha) into dia; SELECT CASE WHEN date_part('dow',marcaciones.fecha) = 0 THEN 'Domingo' WHEN date_part('dow',marcaciones.fecha) = 1 THEN 'Lunes' WHEN date_part('dow',marcaciones.fecha) = 2 THEN 'Martes' WHEN date_part('dow',marcaciones.fecha) = 3 THEN 'Miercoles' WHEN date_part('dow',marcaciones.fecha) = 4 THEN 'Jueves' WHEN date_part('dow',marcaciones.fecha) = 5 THEN 'Viernes' WHEN date_part('dow',marcaciones.fecha) = 6 THEN 'Sabado' END INTO diatexto; IF dia=5 THEN select marcaciones.fecha + 1 into fechasabado; select marcaciones.fecha + 2 into fechadomingo; select diatexto,marcaciones.fecha,marcaciones.d1,marcaciones.d2,marcaciones.d3,marcaciones.d4, marcaciones.d5,marcaciones.d6,marcaciones.d7,marcaciones.d8,marcaciones.d9,marcaciones.d10, marcaciones.d11,marcaciones.d12 UNION ALL select 'Sábado'::text,fechasabado,hora,hora,hora,hora,hora,hora,hora,hora,hora,hora,hora,hora UNION ALL select 'Domingo'::text,fechadomingo,hora,hora,hora,hora,hora,hora,hora,hora,hora,hora,hora,hora INTO fila; raise notice '% fila',fila; ELSE SELECT diatexto,marcaciones.fecha,marcaciones.d1,marcaciones.d2,marcaciones.d3,marcaciones.d4, marcaciones.d5,marcaciones.d6,marcaciones.d7,marcaciones.d8,marcaciones.d9,marcaciones.d10, marcaciones.d11,marcaciones.d12 INTO fila; END IF; return next fila; END LOOP; RETURN; END;$BODY$ LANGUAGE plpgsql VOLATILE En la función identifico el día viernes para poder unir con union all los dias sábados y domingos pero al hacer correr no me funciona Lo que la función obtiene es esto: "Lunes";"2016-02-01";"08:26:00";"12:31:00";"02:35:00";"06:34:00";"";"" "Martes";"2016-02-02";"08:35:00";"12:32:00";"02:33:00";"07:03:00";"";"" "Miercoles";"2016-02-03";"08:32:00";"12:32:00";"02:33:00";"06:40:00";"";"" "Jueves";"2016-02-04";"08:38:00";"12:32:00";"02:32:00";"06:45:00";"";"" "Viernes";"2016-02-05";"08:00:00";"11:32:00";"12:24:00";"05:27:00";"";"" "Miercoles";"2016-02-10";"08:42:00";"01:18:00";"01:52:00";"07:09:00";"";"" "Jueves";"2016-02-11";"08:37:00";"12:35:00";"02:34:00";"06:39:00";"";"" "Viernes";"2016-02-12";"08:32:00";"12:42:00";"02:33:00";"03:47:00";"05:08:00";"06:49:00" "Lunes";"2016-02-15";"08:34:00";"12:33:00";"02:33:00";"06:49:00";"";"" "Martes";"2016-02-16";"08:40:00";"08:40:00";"12:35:00";"02:34:00";"06:35:00";"" "Miercoles";"2016-02-17";"08:38:00";"01:00:00";"02:24:00";"06:37:00";"";"" "Jueves";"2016-02-18";"08:32:00";"12:31:00";"02:34:00";"06:33:00";"";"" "Viernes";"2016-02-19";"08:34:00";"12:33:00";"02:34:00";"06:37:00";"";"" "Lunes";"2016-02-22";"08:36:00";"12:31:00";"02:32:00";"06:43:00";"";"" "Martes";"2016-02-23";"08:35:00";"11:31:00";"02:32:00";"06:50:00";"";"" "Miercoles";"2016-02-24";"08:33:00";"12:32:00";"02:33:00";"06:55:00";"";"" "Jueves";"2016-02-25";"08:34:00";"12:34:00";"02:32:00";"06:32:00";"";"" "Viernes";"2016-02-26";"08:38:00";"12:31:00";"02:34:00";"06:36:00";"";"" "Lunes";"2016-02-29";"08:39:00";"12:31:00";"02:35:00";"06:34:00";"";"" Desde ya gracias por su tiempo y cualquier consejo es bien recibido.