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 回答