• Taking a crack at this... Try this article:

    Tally Tables[/url]

    With a tally table, you could whip up something like this; note that my naming is a bit sketchy, because this is going to be mostly a test of concept:

    SELECT TOP 11000 --equates to more than 30 years of dates

    IDENTITY(INT,1,1) AS N INTO #Tally

    FROM Master.dbo.SysColumns sc1,

    Master.dbo.SysColumns sc2

    --===== Add a Primary Key to maximize performance

    ALTER TABLE #Tally ADD CONSTRAINT PK_Tally_N

    PRIMARY KEY CLUSTERED (N) WITH FILLFACTOR = 100

    SELECT N,CONVERT(DateTime,32500+N) AS Dates

    INTO #Temp

    FROM #Tally

    ORDER BY 32500+N ASC

    SELECT N,CONVERT(DateTime,32500+N) AS Dates

    INTO #Temp2

    FROM #Tally

    SELECT b.Dates,a.Dates FROM #Temp2 a

    INNER JOIN #Temp b

    ON a.N >= B.N AND a.N < b.N+7

    WHERE DATEPART(DW,b.Dates) = 4

    ORDER BY b.Dates ASC

    This is going to give you a set of dates from 1988 to 2019, and a pair of columns; one will have the Wednesday of a particular week (your "starting point", in essence), and the other will contain all of the dates that would fall into this week. The dates will "belong" to the week on the left; in essence, you'd run an update from here to set the actual date to the "starting point" date.

    This is a rough conceptual example, since we don't have sample data and so forth; this code will probably need a good bit of adaptation, but it should be a good starting point. Please include table definitions and sample data if you'd like more clarification.

    - 😀