If I'm understanding the objective correctly, I don't think you're going to be able to do it without some customization (unless you make use of Auditing). Basically, let's say you have an Opportunity (I'm slightly oversimplifying here but basic idea is correct)
created - a corresponding database record will be created for it. As the stage changes, only the SalesStageAttribute for instance will change - so there will still just be one record. From a reporting POV, the stage will be whatever it is when it's run.
You could have Auditing Enabled and it'd take a little fancy SQL or API queries, but you could use it to check the Old Value and New Value. Not sure it's the most elegant approach from a reporting POV. To that end, it'd be very simple to have a "OpportunitySequence"
entity which is 1->M from Opportunity. Each time the attribute changes and is saved, a workflow or plugin could go and create a related record here. It'd be very simpilar to what's done with auditing, but you couldn't have to have all sorts of conditional
logic to filter out other field changes and it'd be a much cleaner implementation. You could do this with an OOB workflow too I believe so although I don't think you can solve the scenario directly OOB, you could get really close
Cordially, W.G.Ryan - www.williamgryan.mobi