1

部品カテゴリと関連する部品コストを含む一時テーブルがあります。

#part_costs
part_cat  |  part_cost
tire      |  0
fuel      |  24
wheel     |  34

行数とその中の値#part_costsは動的です。ピボットを作成しようとしているので、次のようになります(列の順序は関係ありません)。

tire | fuel | wheel
0    | 24   | 34

NVARCHAR(2000)名前を保持するパーツカテゴリ変数を保持するテーブル変数を作成しました。

"[fuel],[tires],[wheel]"

これまでのところ、私のピボットについては

SELECT [fuel],[tires],[wheel] FROM (SELECT part_cat, part_cost FROM #part_costs ) p PIVOT ( [part_cost] FOR part_category IN ( [fuel],[tires],[wheel] )) AS pvt

しかし、これを機能させることはできません。これが配置されているストアドプロシージャを実行できますが、ストアドプロシージャを実行すると、次のエラーが発生します。Incorrect syntax near the keyword 'FOR'.

以前はselect 'part_cost' as costs, @part_names from (select part_cat, part_cost from #part_costs) as p PIVOT (part_cost for part_cat in (@part_names)) as PivotTable、これではストアドプロシージャを実行することさえできませんでしたが、Incorrect syntax near the keyword 'for'.

4

1 に答える 1

4

FOR の前に集計関数 (AVG、MAX など) を使用する必要があります。また、列の値の名前が正しくリストされていることを確認してください。つまり、タイヤはタイヤと同じではありません。

SELECT [fuel],[tire],[wheel]
FROM (
    SELECT part_cat, part_cost
    FROM #part_costs
) p
PIVOT
(
    Avg([part_cost]) FOR part_cat IN ( [fuel],[tire],[wheel] )
) AS pvt
于 2012-04-10T21:21:10.563 に答える