• Just so I'm clear you wish the dates to display as Monday - Sunday, but if the fromDate is not a monday, you wish to start on that day and similar to finish on the toDate if it is not a sunday?

    This should get you started

    DECLARE@FromDate DATETIME = '20140701',

    @ToDate DATETIME = '20140731';

    SELECTWeekNum = N + 1,

    WeekStart = CASE WHEN CA1.WeekStart < @FromDate THEN @FromDate ELSE CA1.WeekStart END,

    WeekEnd = CASE WHEN CA1.WeekEnd > @ToDate THEN @ToDate ELSE CA1.WeekEnd END

    FROMdbo.GetNums(0,DATEDIFF(WK,@FromDate,@ToDate))

    CROSS

    APPLY(

    SELECTDATEADD(WEEK,N,DATEADD(DAY,DATEDIFF(DD,0,@FromDate)/7*7,0)),

    DATEADD(WEEK,N+1,DATEADD(DAY,DATEDIFF(DD,0,@FromDate)/7*7-1,0))

    ) AS CA1(WeekStart,WeekEnd)

    Last week in your example starts on the 27th, think it should be the 28th.