postgresql7.3 SELECT ts.task_id, ts.task_id as item_id, ts.task_number, t.task_revision_id, t.title, t.parent_id as project_item_id, to_char(t.earliest_start,'J') as earliest_start_j, to_char(current_timestamp,'J') as today_j, to_char(t.latest_start,'J') as latest_start_j, to_char(t.latest_finish,'J') as latest_finish_j, to_char(t.latest_start,'YYYY-MM-DD HH24:MI') as latest_start, to_char(t.latest_finish,'YYYY-MM-DD HH24:MI') as latest_finish, t.percent_complete, t.estimated_hours_work, t.estimated_hours_work_min, t.estimated_hours_work_max, case when t.actual_hours_worked is null then 0 else t.actual_hours_worked end as actual_hours_worked, to_char(t.earliest_start,'YYYY-MM-DD HH24:MI') as earliest_start, to_char(t.earliest_finish,'YYYY-MM-DD HH24:MI') as earliest_finish, to_char(t.latest_start,'YYYY-MM-DD HH24:MI') as latest_start, to_char(t.latest_finish,'YYYY-MM-DD HH24:MI') as latest_finish, p.first_names || ' ' || p.last_name || ' (' || substring(r.one_line from 1 for 1) || ')' as full_name, p.person_id, s.status_type as status, r.is_lead_p, projectr.title as project_name FROM pm_tasks_active ts, pm_task_status s, cr_items i, pm_tasks_revisionsx t LEFT JOIN pm_task_assignment ta ON t.item_id = ta.task_id LEFT JOIN persons p ON ta.party_id = p.person_id LEFT JOIN pm_roles r ON ta.role_id = r.role_id, cr_items projecti, cr_revisions projectr WHERE ts.status = s.status_id and ts.task_id = t.item_id and i.item_id = t.item_id and t.task_revision_id = i.live_revision and t.latest_start >= :first_of_month_date and t.latest_start <= :last_of_month_date and t.parent_id = projecti.item_id and projecti.live_revision = projectr.revision_id $hide_closed_clause $selected_users_clause ORDER BY t.latest_start, ts.task_id, r.role_id, p.first_names, p.last_name