2017-04-26 1 views
0

Ich habe eine Abfrage unten. In der letzten Auswahl zwei Felder, USDVal & CP sind ungültige Spaltennamen, wenn ich die Abfrage ausführen. Ich verstehe nicht warum, aber?Quellpivot mag keine Spaltennamen

Da, wenn ich die Abfrage unter Ausschluss der letzten Zeile ("als Quelle ..") ausführen, wird die Abfrage ausgeführt.

;with s as 
(
    select cp, mktVal, date 
    from tblDaily 
    where date = '2017-01-30' and id = 'SFAB' 
), h as 
(
    select idMK, name, cp, wgt 
    from tblDrift 
    where date = '2017-03-30' and idSub = 'V12' and wgt <> 0 
), m as 
(
    select h.idMK, h.name, h.wgt * s.mktVal as USDVal, h.cp 
    from h left join s on h.cp = s.cp 
) 
select idMK, name, USDVal, cp from m 
as source pivot(max(USDVal) for cp in ([BPP],[NCV])) as pvt 

Antwort

1

Versuchen Sie, Ihre letzten beiden Zeilen zu so etwas zu ändern:

SELECT pvt.* 
FROM 
(
    select idMK, name, USDVal, cp from m 
) as source 
pivot(max(USDVal) for cp in ([BPP],[NCV])) as pvt 
+0

großen Dank, das funktioniert! Weißt du warum, warum nicht? – mHelpMe

+0

@mHelpMe Lesen Sie über [Syntax von Pivot] (https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-und-unpivot). Ihr Code definiert eine abgeleitete Tabelle mit dem Alias ​​'pvt', aber Sie verwenden sie nicht ... Wenn dies Ihr Problem löst, wäre es nett, dies zu akzeptieren, thx – Shnugo