Originally posted by Victoria select to_date('01-JAN-&YYYY') + (&wk -1)*7 + r - 1
from dual , ( select rownum r from tab where rownum < 7 )
where to_char(to_date('01-JAN-&YYYY') +(&wk -1)*7 + r -1 , 'DY') = 'MON'
You might have to change the logic to derive the first day of the first week in the given year and use that instead of '01-JAN-&YYYY'.
This is the closest i could get..
Can you explain me this logic please.. why u r using r variable
Lets say wk = 2, then
to_date('01-JAN-&YYYY') + (&wk -1)*7 will give me the first day of the 2nd week following '01-JAN-&YYYY' .
Now from that date onwards, you have to test if it is a Monday and you have to test this for the 7 days in that week.
Since there is no loop functionality in sql, I used an inline view
( select rownum r from tab where rownum < 7 ) which is 1 through 6. But I had to subtract 1 because I dont want to miss the start date.