2016-05-02 17 views
0

Im Folgenden ist der Teil einer Abfrage. Wenn ich die Ausführung ausführe, bekomme ich die richtige Ausgabe. Aber wenn ich diese Abfrage bin auch, erhalte ich Fehler:Fehler beim Ausführen des Codes

Msg 8155, Ebene 16, Status 2 Prozedur SP_CUR_LEAR, Linie 294 Kein Spaltenname für Spalte 1 von ‚CTE_DATE‘ angegeben wurde.

Auch ich muss die Daten in die Tabelle # lear1 ohne Datumslücken einfügen.

;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 

Antwort

0

Sie haben einen Alias-Namen für die CTE_DATE verpasst. Wenn Sie den Aliasnamen St_Date für @start_date hinzufügen und an den anderen Stellen dasselbe verwenden, wird das Problem gelöst.

Im Fall, wenn Sie ein Tag + 1 hinzufügen möchten, können Sie 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 Könnten Sie die obige Antwort bestätigen verwenden Werke ist? Wenn nicht, können wir für die richtige Lösung hinzufügen/ändern. – Arulkumar

Verwandte Themen