2017-04-26 9 views
0

私は以下の質問があります。ただし、最後の2つのフィールドを選択すると、USDVal & cpはクエリを実行すると無効な列名になります。私はなぜか分からないのですか?ソースピボットは列名が好きではありません

最後の行(「ソースとして」)を除いて以下のクエリを実行すると、クエリが実行されるためです。

;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 

答えて

1

このような何かにあなたの最後の2行を変更してください:

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

素晴らしい作品に感謝!あなたはなぜ私のことを知っていますか? – mHelpMe

+0

@mHelpMe [ピボットの構文](https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-and-unpivot)を参照してください。あなたのコードは 'pvt'というエイリアスを持つ派生テーブルを定義しますが、あなたはそれを使用しません...これがあなたの問題を解決すれば、これを受け入れることは親切です – Shnugo

関連する問題