date code id cur hrs tips 2011-01-21 12:00:00 1 BP1616 USD 10 5 2011-01-21 12:00:00 1 BP1616 USD 8 15 2011-01-22 12:00:00 1 BP1616 USD 3 0 2011-01-23 12:00:00 1 BP1616 USD 0 0 2011-01-24 12:00:00 1 BP1616 USD 8 15 2011-01-25 12:00:00 1 BP1616 USD 8 15 2011-01-26 12:00:00 1 BP1616 USD 8 15 2011-01-27 12:00:00 1 BP1616 USD 4 15 2011-01-28 12:00:00 1 BP1616 USD 8 15 2011-01-29 12:00:00 1 BP1616 USD 3 25 2011-01-21 12:00:00 1 KP1616 USD 8 60 2011-01-22 12:00:00 1 KP1616 USD 0 25 2011-01-23 12:00:00 1 KP1616 USD 0 0 2011-01-24 12:00:00 1 KP1616 USD 8 60 2011-01-25 12:00:00 1 KP1616 USD 8 60 2011-01-26 12:00:00 1 KP1616 USD 8 60 2011-01-27 12:00:00 1 KP1616 USD 0 0 2011-01-28 12:00:00 1 KP1616 USD 8 4 2011-01-29 12:00:00 1 KP1616 USD 0 0 2011-01-29 12:00:00 1 KP1616 USD 0 20 2011-01-21 12:00:00 1 PP3232 USD 100 5 2011-01-21 12:00:00 1 PP3232 USD 4 15 2011-01-22 12:00:00 1 PP3232 USD 4 10 2011-01-23 12:00:00 1 PP3232 USD 0 0 2011-01-24 12:00:00 1 PP3232 USD 4 15 2011-01-25 12:00:00 1 PP3232 USD 4 15 2011-01-26 12:00:00 1 PP3232 USD 20 150 2011-01-27 12:00:00 1 PP3232 USD 20 150 2011-01-28 12:00:00 1 PP3232 USD 200 1500 2011-01-29 12:00:00 1 PP3232 USD 0 5 2011-01-30 12:00:00 1 PP3232 USD 10 5 2011-01-21 12:00:00 1 PT3232 USD 10 25 2011-01-22 12:00:00 1 PT3232 USD 0 0 2011-01-23 12:00:00 1 PT3232 USD 12 100 2011-01-24 12:00:00 1 PT3232 USD 12 100 2011-01-25 12:00:00 1 PT3232 USD 12 100 2011-01-26 12:00:00 1 PT3232 USD 12 100 2011-01-27 12:00:00 1 PT3232 USD 12 100 2011-01-28 12:00:00 1 PT3232 USD 0 50 2011-01-29 12:00:00 1 PT3232 USD 10 50 #### #!/usr/bin/perl use DBI; use DBD::mysql; print "Connecting...\n"; my $platform; my $database; my $host; my $port; my $tablename = "points"; my $user; my $pwd; open(STDOUT, ">C:\\perlscripts\\pts.txt") || die "Can't open the file"; my $dsn = "dbi:mysql:$database:$host:$port"; my $dbh = DBI->connect($dsn,$user,$pwd) || die "Could not connect: $DBI::errstr\n"; my $query = $dbh->selectall_arrayref("select dat, code, id, cur, hrs, tips from points order by id, dat", { Slice => {} }); foreach my $row(@$query) { print "$row->{dat}\t$row->{code}\t$row->{id}\t$row->{cur}\t$row->{hrs}\t$row->{tips}\n"; } #### data code id cur hrs tips 2011-01-21 12:00:00 1 BP1616 USD 18 20 2011-01-22 12:00:00 1 BP1616 USD 3 0 2011-01-23 12:00:00 1 BP1616 USD 0 0 2011-01-24 12:00:00 1 BP1616 USD 8 15 2011-01-25 12:00:00 1 BP1616 USD 8 15 2011-01-26 12:00:00 1 BP1616 USD 8 15 2011-01-27 12:00:00 1 BP1616 USD 4 15 2011-01-28 12:00:00 1 BP1616 USD 8 15 2011-01-29 12:00:00 1 BP1616 USD 3 25 2011-01-21 12:00:00 1 KP1616 USD 8 60 2011-01-22 12:00:00 1 KP1616 USD 0 25 2011-01-23 12:00:00 1 KP1616 USD 0 0 2011-01-24 12:00:00 1 KP1616 USD 8 60 2011-01-25 12:00:00 1 KP1616 USD 8 60 2011-01-26 12:00:00 1 KP1616 USD 8 60 2011-01-27 12:00:00 1 KP1616 USD 0 0 2011-01-28 12:00:00 1 KP1616 USD 8 4 2011-01-29 12:00:00 1 KP1616 USD 0 20 2011-01-21 12:00:00 1 PP3232 USD 104 20 2011-01-22 12:00:00 1 PP3232 USD 4 10 2011-01-23 12:00:00 1 PP3232 USD 0 0 2011-01-24 12:00:00 1 PP3232 USD 4 15 2011-01-25 12:00:00 1 PP3232 USD 4 15 2011-01-26 12:00:00 1 PP3232 USD 20 150 2011-01-27 12:00:00 1 PP3232 USD 20 150 2011-01-28 12:00:00 1 PP3232 USD 200 1500 2011-01-29 12:00:00 1 PP3232 USD 0 5 2011-01-30 12:00:00 1 PP3232 USD 10 5 2011-01-21 12:00:00 1 PT3232 USD 10 25 2011-01-22 12:00:00 1 PT3232 USD 0 0 2011-01-23 12:00:00 1 PT3232 USD 12 100 2011-01-24 12:00:00 1 PT3232 USD 12 100 2011-01-25 12:00:00 1 PT3232 USD 12 100 2011-01-26 12:00:00 1 PT3232 USD 12 100 2011-01-27 12:00:00 1 PT3232 USD 12 100 2011-01-28 12:00:00 1 PT3232 USD 0 50 2011-01-29 12:00:00 1 PT3232 USD 10 50 #### date code id cur beg_hr end_hr beg_tip end_tip 2011-01-21 12:00:00 1 BP1616 USD 0 18 0 20 2011-01-22 12:00:00 1 BP1616 USD 18 21 20 20 2011-01-23 12:00:00 1 BP1616 USD 21 21 20 20 2011-01-24 12:00:00 1 BP1616 USD 21 29 20 35 2011-01-25 12:00:00 1 BP1616 USD 29 37 35 50 2011-01-26 12:00:00 1 BP1616 USD 37 45 50 65 2011-01-21 12:00:00 1 KP1616 USD 0 8 0 60 2011-01-22 12:00:00 1 KP1616 USD 8 8 60 85 2011-01-23 12:00:00 1 KP1616 USD 8 8 85 85 2011-01-24 12:00:00 1 KP1616 USD 8 16 85 145 2011-01-25 12:00:00 1 KP1616 USD 16 24 145 205 2011-01-26 12:00:00 1 KP1616 USD 24 32 205 265 2011-01-21 12:00:00 1 PP3232 USD 0 104 0 20 2011-01-22 12:00:00 1 PP3232 USD 104 108 20 30 2011-01-23 12:00:00 1 PP3232 USD 108 108 30 30 2011-01-24 12:00:00 1 PP3232 USD 108 112 30 45 2011-01-25 12:00:00 1 PP3232 USD 112 116 45 60 #### For the first day, beg_hr = beg_tip = 0; end_hr = beg_hr + (hrs for first day from data); end_tip = beg_tip + (tips for first day from data). For every day afterwards: beg_hr(current) = end_hr(previous day); beg_tip(current) = end_tip(previous day); end_hr(current) = beg_hr(current) + hrs(current) end_tip(current) = beg_tip(current) + tips(current) This pattern should continue until last day is reached.