2016-05-02 143 views
0

以下是查询的一部分。如果我正在执行除了这个,我正在得到正确的输出。 但如果我包括此查询,我得到错误:执行代码时出错

消息8155,级别16,状态2,过程SP_CUR_LEAR,294线 没有列名于“CTE_DATE”第1栏指明。

此外我需要插入数据表#lear1没有日期的差距。

;WITH CTE_DATE AS ( 
    SELECT @start_date 
    UNION ALL 
    SELECT @start_date + 1 
    FROM CTE_DATE 
    WHERE @start_date <= @End_Date 
), 
CTE AS 
(
Select CTE_DATE.St_Date eff_date 
From CTE_Date 
), 
C (eff_date, partnumber, total_price) as 
(select CTE.eff_date, PARTNUMBER, ISNULL(X.cnt,(Select Z.cnt 
      From (Select AA.Totalprice cnt, Rank() Over(Order By AA.eff_date asc) RN 
             From #LEAR AA 
             Where AA.eff_date < CTE.eff_date OR AA.eff_date = CTE.eff_date 
                      ) Z 
                     Where Z.RN = 1)) 
from CTE 
Left Outer Join (Select eff_date, partnumber, totalprice cnt From #lear) X ON X.eff_date = CTE.eff_date  
) 

insert into #lear1 (eff_date, partnumber, totalprice) 
select eff_date, partnumber, total_price from c 

回答

0

您错过了CTE_DATE的别名。添加别名St_Date@start_date并在其他地方处理相同将解决问题。

在情况下,如果你想添加一个节+ 1,你可以使用DATEADD

;WITH CTE_DATE AS ( 
    SELECT @start_date AS St_Date 
    UNION ALL 
    SELECT DATEADD(DAY, +1, St_Date) AS St_Date 
    FROM CTE_DATE 
    WHERE St_Date <= @End_Date 
), 
CTE AS 
(
Select CTE_DATE.St_Date eff_date 
From CTE_Date 
), 
C (eff_date, partnumber, total_price) as 
.... 
.... 
+0

@Rains你能否证实上面的回答是作品?如果没有,我们可以添加/更改正确的解决方案。 – Arulkumar