• askmewhat (9/17/2012)


    sorry last request... if Sunday were to be added on there? So both Saturday and Sunday.

    He is one for you, it can count any number of selected week days separately and summarised:

    DECLARE @year int

    DECLARE @DaysToCount VARCHAR(7) -- any combination of 1234567 as per Monday (1) to Sunday (7)

    SET @year = 2015

    SET @DaysToCount = '357' -- to count Wednesdays, Fridays and Sundays

    ;WITH ym

    AS

    (

    SELECT CAST(CAST(@year * 100 + m.m AS CHAR(6)) + '01' AS datetime) mfd

    FROM (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) m(m)

    )

    , dc

    AS

    (

    SELECT CAST(d-1 AS DATETIME) AS wd

    FROM (VALUES (1),(2),(3),(4),(5),(6),(7)) d(d)

    WHERE CHARINDEX(CAST(d AS VARCHAR(1)), @DaysToCount,1) > 0

    )

    -- if you want just a SUM of selected week days per month USE THIS QUERY:

    SELECT

    MONTH(mfd) AS MonthNo

    ,DATENAME(MONTH,mfd) AS MonthName

    ,SUM(DATEDIFF(DAY, wd, DATEADD(DAY, -1, DATEADD(MONTH, 1, mfd))) / 7 -

    DATEDIFF(DAY, wd, DATEADD(DAY, -1, mfd)) / 7 ) AS NoOfSelectedWeekDays

    FROM ym

    CROSS JOIN dc

    GROUP BY mfd

    ORDER BY mfd

    -- if you want list of WeekDays per Month for each week day separately uncomment and

    -- USE THIS QUERY instead of above one:

    /*

    SELECT

    MONTH(mfd) AS MonthNo

    ,DATENAME(MONTH,mfd) AS MonthName

    ,DATENAME(WEEKDAY,wd) AS WeekDay

    ,DATEDIFF(DAY, wd, DATEADD(DAY, -1, DATEADD(MONTH, 1, mfd))) / 7 -

    DATEDIFF(DAY, wd, DATEADD(DAY, -1, mfd)) / 7 AS NoOfWeekDays

    FROM ym

    CROSS JOIN dc

    ORDER BY mfd , wd

    */

    _____________________________________________
    "The only true wisdom is in knowing you know nothing"
    "O skol'ko nam otkrytiy chudnyh prevnosit microsofta duh!":-D
    (So many miracle inventions provided by MS to us...)

    How to post your question to get the best and quick help[/url]