Give this a shot.
; with Year2010 AS (
Select
AREA,SRC
,case
when DATE between '1/1/2010' AND getdate() THEN 'YTD 2010'
when DATE between '1/1/2009' AND dateadd(yy,-1,getdate()) THEN 'YTD 2009'
else 'Not Required'end AS PERIOD
,COUNT(distinct ACCOUNT_NO) as AC_Count
fromdbo.Dim1 a
where FILTER_CODE not in ('4','9','unknown')
and DATE between '1/1/2010' AND getdate()
group by
AREA,SRC
,case
when DATE between '1/1/2010' AND getdate() THEN 'YTD 2010'
when DATE between '1/1/2009' AND dateadd(yy,-1,getdate()) THEN 'YTD 2009'
else 'Not Required'end
)
, Year2009 AS (
Select
AREA,SRC
,case
when DATE between '1/1/2010' AND getdate() THEN 'YTD 2010'
when DATE between '1/1/2009' AND dateadd(yy,-1,getdate()) THEN 'YTD 2009'
else 'Not Required'end AS PERIOD
,COUNT(distinct ACCOUNT_NO) as AC_Count
fromdbo.Dim1 a
where FILTER_CODE not in ('4','9','unknown')
and DATE between '1/1/2009' AND dateadd(yy,-1,getdate())
group by
AREA,SRC
,case
when DATE between '1/1/2010' AND getdate() THEN 'YTD 2010'
when DATE between '1/1/2009' AND dateadd(yy,-1,getdate()) THEN 'YTD 2009'
else 'Not Required'end
)
SELECT
Year2010.
,
Year2010.[SRC],
Year2010.[AC_COUNT][AC_COUNT YTD2010],
Year2009.[AC_COUNT][AC_COUNT YTD2009],
Year2010.[AC_COUNT] - Year2009.[AC_COUNT] AS [CountDifference]
FROM Year2010
INNER JOIN Year2009
ON Year2010.AREA = Year2009.AREA
AND Year2010.SRC =Year2009.SRC
--AND Year2010.PERIOD=Year2009.PERIOD