Sql server 2005 日期上的递归CTE

Sql server 2005 日期上的递归CTE,sql-server-2005,common-table-expression,Sql Server 2005,Common Table Expression,我想在Sql server中使用以下查询递归地遍历临时表by date1字段。我希望@stardate和@enddate应该自动递增到@stopcriteria,最初从 “2011年1月1日”至“2011年12月31日”,然后 “2012年1月1日”至“2012年12月31日”等,直至@stopCriteria和resultset应继续与union联合。我已经使用cte编写了以下查询,但不起作用 CREATE TABLE #tempbbs576 ( id int, amount mone

我想在Sql server中使用以下查询递归地遍历临时表by date1字段。我希望@stardate和@enddate应该自动递增到@stopcriteria,最初从 “2011年1月1日”至“2011年12月31日”,然后 “2012年1月1日”至“2012年12月31日”等,直至@stopCriteria和resultset应继续与union联合。我已经使用cte编写了以下查询,但不起作用

   CREATE TABLE #tempbbs576 ( id int,  amount money, date1 date)   
insert into #tempbbs576(id,amount,date1)  values(1,1000,'1/1/2018')  
insert into #tempbbs576(id,amount,date1)  values(2,20010,'22/3/2019')  
insert into #tempbbs576(id,amount,date1)  values(3,40010,'1/1/2017')  
insert into #tempbbs576(id,amount,date1)  values(4,50010,'23/4/2018')  
insert into #tempbbs576(id,amount,date1)  values(5,60010,'1/1/2018')  
insert into #tempbbs576(id,amount,date1)  values(6,70010,'21/1/2018')   

    DECLARE @startDate DATE; 
    DECLARE @endDate DATE;   
    DECLARE @stopCriteria DATE;   
    SET @startDate='01/01/2011'; SET @endDate='12/31/2011'; SET @stopCriteria='01/01/2018';   

    ;WITH ctesequence 
         AS (SELECT 'Year' + Datename(year, Dateadd(year, 1, @startDate)) /*'2012'*/  
     AS FiscalYear, Count(DISTINCT id) AS Last2Years   
             FROM   [dbo].[#tempbbs576](nolock) WHERE  date1 BETWEEN @startDate AND    
     @endDate AND id IN (SELECT id FROM  [dbo].[#tempbbs576]  
                               WHERE  date1 < Dateadd(year, -1, @startDate) AND id    
     NOT IN (SELECT id FROM [dbo].[#tempbbs576]  WHERE  date1 BETWEEN  
     Dateadd(year,-1, @startDate) AND Dateadd( year, -1, @endDate ) ))   
             UNION   
             SELECT 'Year' + Datename(year, Dateadd(year, 1, @startDate)) /*'2012'*/  
     AS FiscalYear, Count(DISTINCT id)  AS Last2Years FROM ctesequence  WHERE  date1 <= @stopCriteria)  
    SELECT * FROM   ctesequence OPTION(maxrecursion 0)
请让我知道是否可以通过cte

提前感谢,, 阿马尔