Take the following spreadsheet
Load it into an Access database like so
The key to this transformation is to use an index variable (called "counterColumn") that will move as each record is mapped. Then, using a bit of logic in the target mapping, do something like
If columnCounter = 1 Then
If columnCounter = 2 Then
If columnCounter = 3 Then
this is the mapping for target field "RevenueItemValue". RevenueItemName is mapped the same for each MapPut Record. FiscalYear is taken from an array that is also advanced with the index (counterColumn).
To control the iteration, reset counterColumn in the BeforeEveryRecord event (columnCounter = 1) and advance the variable in AfterMap (columnCounter = columnCounter + 1).
When you're getting your data from a report-like spreadsheet, it may take some additional setup to render this into something nice for an RDBMS. Use multiple MapPut Record Actions to write out records for each column representing a new set of values.