my $sql = qq/select TOP 500 "vwGenSvcInfo"."Voucher_Number", "vwGenPatInfo"."Patient_Number", "vwGenPatInfo"."Patient_First_Name", "vwGenPatInfo"."Patient_Last_Name", "vwGenSvcInfo"."Service_Date_From", "vwGenSvcInfo"."Procedure_Code", "vwGenSvcPmtInfo"."Transaction_Type", "vwGenSvcPmtInfo"."Transfer_To_Carrier_Abbr" from ("Ntier_Training"."PM"."vwGenSvcPmtInfo" "vwGenSvcPmtInfo" INNER JOIN "Ntier_Training"."PM"."vwGenSvcInfo" "vwGenSvcInfo" ON "vwGenSvcPmtInfo"."Service_ID"="vwGenSvcInfo"."Service_ID") INNER JOIN "Ntier_Training"."PM"."vwGenPatInfo" "vwGenPatInfo" ON "vwGenSvcInfo"."Patient_ID"="vwGenPatInfo"."Patient_ID" order by Voucher_Number /; my $dbh = DBI->connect('DBI:ODBC:DATABOX'); my $sth = $dbh->prepare($sql); $sth->execute(); my %pats_hoh; while (my $pats = $sth->fetchrow_hashref) { #next unless exists($pats->{'Transaction_Type'}); my $voucher = $pats->{'Voucher_Number'}; my $proc_code = $pats->{'Procedure_Code'}; $pats_hoh{$voucher}{$proc_code}{Patient_Number} = $pats->{'Patient_Number'}; $pats_hoh{$voucher}{$proc_code}{Voucher_Number} = $pats->{'Voucher_Number'}; $pats_hoh{$voucher}{$proc_code}{Patient_Last_Name} = $pats->{'Patient_Last_Name'}; $pats_hoh{$voucher}{$proc_code}{Transaction_Type} = $pats->{'Transaction_Type'};