my $max_size = 5; # SELECT MAX(size)
print("
");
print("");
print("");
print(" | Sizes");
print(" |
");
print("QTY");
for my $size (1..$max_size) {
print(" | $size");
}
my $last_qty;
my $last_size;
for (
# SELECT qty, size, price ORDER BY qty ASC, size ASC
[ 100, 1, 43 ],
[ 100, 2, 45 ],
[ 100, 3, 50 ],
[ 200, 4, 55 ],
[ 250, 1, 52 ],
[ 250, 2, 55 ],
[ 250, 3, 56 ],
[ 250, 5, 61 ],
) {
my ($size, $qty, $price) = @$_;
if (!defined($last_qty) || $qty != $last_qty) {
if (defined($last_size)) {
print(" | ") for $last_size+1 .. $max_size;
$last_size = 0;
}
print(" |
");
print("$qty");
$last_qty = $qty;
}
print(" | ") for $last_size+1 .. $size-1;
print(" | \$$price");
}
if (defined($last_size)) {
print(" | ") for $last_size+1 .. $max_size;
}
print(" |
");
####
use List::Util qw( max );
my %table;
my $max_size = 0;
for (
# SELECT qty, size, price
[ 100, 1, 43 ],
[ 250, 1, 52 ],
[ 100, 2, 45 ],
[ 250, 2, 55 ],
[ 100, 3, 50 ],
[ 250, 3, 56 ],
[ 200, 4, 55 ],
[ 250, 5, 61 ],
) {
my ($qty, $size, $price) = @$_;
$table{$qty}[$size] = $price;
$max_size = $size if $size > $max_size;
}
print("");
print("");
print("");
print(" | Sizes");
print(" |
");
print("QTY");
for my $size (1..$max_size) {
print(" | $size");
}
for my $qty (sort { $a <=> $b } keys(%table)) {
print(" |
");
print("$qty");
for my $size (1..$num_cols) {
print(" | ", defined($table{$qty}[$size]) ? "\$$table{$qty}[$size]" : '');
}
}
print(" |
");