If I have a table that looks like this
begin date end date data
2013-01-01 2013-01-04 7
2013-01-05 2013-01-06 9
How can I make it be returned like this...
date data
2013-01-01 7
2013-01-02 7
2013-01-03 7
2013-01-04 7
2013-01-05 9
2013-01-06 9
One thing I was thinking of doing is to have another table that just has all the dates and then join the table with just dates to the above table using date>=begin date
and date<=end date
but that seems a little clunky to have to maintain that extra table with nothing but repetitive dates.
In some instances I don't have a data range but just an as of
date which basically looks like my first example but with no end date
. The end date
is implied by the next row's 'as of' date (ie end date should be the next row's as of
-1). I had a "solution" for this that uses the row_number() function to get the next value but I suspect that methodology, which the way I'm doing it has a bunch of nested self joins, contributes to very long query times.