2016-05-02 188 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