my %departments; while($sth->fetch) { $departments{ $department }{department} ||= $department; push @{ $departments{ $department }{classes} }, { class => $class, department => $department, count => $count, }; } #### $tmpl->param( departments => [values %departments], ); #Note: $tmpl is an HTML::Template object #### $tmpl->param( departments => [@departments{ sort keys %departments }], );