Вот что у меня получилось
#!/usr/bin/perl -w
use 5.006;
use strict;
use warnings;
#use Data::Dumper;
use DBI;
my ($schemaName, $passwd, $tableName) = qw(scott tiger t1);
my %content;
my $dbh = DBI->connect("dbi:Oracle:", $schemaName, $passwd);
%content = &getTableContent($schemaName,$tableName);
#print Dumper(\\%content);
&printOutInMyFormat( ) if %content;
$dbh->disconnect( );
sub getTableContent {
my ( $owner, $tabName ) = @_;
my %content;
my $sql = qq{ SELECT name,col
FROM $owner.$tabName
};
my $sth = $dbh->prepare($sql);
$sth->execute( );
while ( @_ = $sth->fetchrow_array ) {
push @{$content{$_[0]}},$_[1];
}
return %content;
}
sub printOutInMyFormat {
foreach my $name( keys %content) {
my $sum = 0;
foreach (@{$content{$name}}) {
print $name, \' - \', $_,"\\n";
$sum += $_;
}
print \'-\' x 10,"\\n$sum\\n\\n"
}
}
Это для Оракла, но я думаю разберётесь. Если же понадобится в отсортированном виде, то добавьте \'sort\' перед \'keys\', и не используйте \'order by\' в запросе.