[
~[tlist_sql;
SELECT 
 	distinct to_char(attendance.att_date,'~[dateformat]')
FROM attendance
JOIN attendance_code ON attendance_code.id = attendance.attendance_codeid
JOIN students ON students.id = attendance.studentid
JOIN calendar_day ON calendar_day.date_value =attendance.att_date
	AND calendar_day.schoolid = students.schoolid
WHERE students.id = ~(gpv.studentid;num)
AND attendance.att_date BETWEEN to_date('~(gpv.startDate;onlydatecharacters)','~[dateformat]') AND to_date('~(gpv.endDate;onlydatecharacters)','~[dateformat]')
AND '~(gpv.attCodes;sqlText)' like '%''' || attendance_code.att_code || '''%'
~[if.~(gpv.excludedDays)<>]
	AND '~(gpv.excludedDays;sqlText)' not like '%''' || calendar_day.type || '''%'
[/if]
AND(
	attendance.att_mode_code = '~(gpv.attMode;sqlText)' OR '~(gpv.attMode;sqlText)' IS NULL
)
AND (
	SELECT count(*)
	FROM attendance att2
	JOIN attendance_code ac2 ON ac2.id = att2.attendance_codeid
	WHERE '~(gpv.attCodes;sqlText)' like '%''' || ac2.att_code || '''%'
	AND att2.studentid = students.id
	AND att2.att_date = attendance.att_date
	AND(
		att2.att_mode_code = '~(gpv.attMode;sqlText)' OR '~(gpv.attMode;sqlText)' IS NULL
	)
) >= ~(gpv.recCount;num)
ORDER BY 1
;]"~(dt)",[/tlist_sql]""]