Query
-- Date Variable
DECLARE @Test AS DATETIME
SET @Test = '2011-02-15'
-- Yesterdays Date
SELECT Dateadd(dd, -1, @test)
-- whole month
-- WeekDays
-- X
SELECT ( Datediff(dd, (SELECT Dateadd(month, Datediff(month, 0, @Test), 0)), (
SELECT
Dateadd(s, -1, Dateadd(mm, Datediff(m, 0, @Test)+1, 0))))
+ 1 ) - ( Datediff(wk, (SELECT Dateadd(month, Datediff(month, 0, @Test)
, 0)),
(SELECT
Dateadd(s, -1, Dateadd(mm, Datediff(m, 0, @Test)
+ 1, 0)
))) * 2 ) - ( CASE
WHEN Datename(dw, (SELECT
Dateadd(month, Datediff(month, 0,
@Test), 0))) =
'Sunday' THEN 1
ELSE 0
END ) - ( CASE
WHEN
Datename(dw, (SELECT Dateadd(s, -1, Dateadd(mm, Datediff(m, 0,
@Test) +
1
, 0))))
= 'Saturday' THEN 1
ELSE 0
END )
-- yesterdays date
-- Weekdays
-- Y
SELECT ( Datediff(dd, (SELECT Dateadd(month, Datediff(month, 0, @Test), 0)), (
SELECT
Dateadd(dd, -1, @test)))
+ 1 ) - ( Datediff(wk, (SELECT Dateadd(month, Datediff(month, 0, @Test)
, 0)),
(SELECT
Dateadd(dd, -1, @test))) * 2 ) - ( CASE
WHEN
Datename(dw, (SELECT Dateadd(month, Datediff(month, 0, @Test), 0))
) =
'Sunday' THEN 1
ELSE 0
END ) - ( CASE
WHEN
Datename(dw, (SELECT Dateadd(dd, -1, @test))) = 'Saturday' THEN 1
ELSE 0
END
)
-- final Result = target * X /Y
SELECT 'Target' * ( Datediff(dd, (SELECT Dateadd(month, Datediff(month, 0, @Test
), 0)),
(SELECT
Dateadd(s, -1, Dateadd(mm, Datediff(m, 0,
@Test)+
1, 0))))
+ 1 ) - ( Datediff(wk, (SELECT Dateadd(month,
Datediff(month, 0,
@Test), 0)), (SELECT
Dateadd(s, -1,
Dateadd(mm, Datediff(m, 0,
@Test)
+ 1, 0
))
)) * 2 ) - ( CASE
WHEN
Datename(dw, (SELECT Dateadd(month, Datediff(month, 0, @Test), 0))
) =
'Sunday' THEN 1
ELSE 0
END ) -
( CASE
WHEN
Datename(dw, (SELECT Dateadd(s, -1, Dateadd(mm, Datediff(m, 0,
@Test) +
1
, 0))))
= 'Saturday' THEN 1
ELSE 0
END
) /
( Datediff(dd, (SELECT Dateadd(month, Datediff(month, 0, @Test), 0
)), (
SELECT
Dateadd(dd, -1, @test)))
+ 1 ) - ( Datediff(wk, (SELECT Dateadd(month, Datediff(month, 0,
@Test)
, 0)), (SELECT
Dateadd(dd, -1, @test))) * 2 ) - (
CASE
WHEN
Datename(dw, (SELECT Dateadd(month, Datediff(month, 0, @Test), 0))
) =
'Sunday' THEN 1
ELSE
0
END )
- ( CASE
WHEN Datename(dw, (SELECT Dateadd(dd, -1, @test))) = 'Saturday'
THEN 1
ELSE 0
END )