function do_it() create cursor test ; ( tt_date D default {}, ; tt_emp I default 0, ; tt_leave c(1) default '' ; ) insert into test values({^2003/05/01}, 1, 'V') insert into test values({^2003/05/07}, 1, '') insert into test values({^2003/05/08}, 1, 'T') insert into test values({^2003/05/09}, 1, 'T') insert into test values({^2003/05/11}, 1, 'V') insert into test values({^2003/05/12}, 1, 'V') insert into test values({^2003/05/13}, 1, 'S') select tt_emp as emp_, ; year(tt_date) as year_, ; month(tt_date) as month_, ; day(tt_date) as day_, ; tt_leave as leave_, ; $1 as count_ ; from test ; into cursor ReportCursor1 ; union all ; select tt_emp as emp_, ; year(tt_date) as year_, ; month(tt_date) as month_, ; 99 as day_, ; tt_leave as leave_, ; ntom(count(*)) as count_ ; from test ; group by 1,2,3,4,5 ; order by 1,2,3,4 && ,5 browse &&report ... && or select tt_emp as emp_, ; year(tt_date) as year_, ; month(tt_date) as month_, ; 0 as grp, ; day(tt_date) as day_, ; tt_leave as leave_, ; $1 as count_ ; from test ; into cursor ReportCursor2 ; union all ; select tt_emp as emp_, ; year(tt_date) as year_, ; month(tt_date) as month_, ; 1 as grp, ; 0 as day_, ; tt_leave as leave_, ; ntom(count(*)) as count_ ; from test ; group by 1,2,3,4,5,6 ; order by 1,2,3,4,5 && ,6 browse endfunc *---------------------------------------------------------------------------