我想将test
表转置为基于Flip
的{{1}}表。
SQL Fiddle通过从Prop_id
非常感谢
修改
表格结构取自test.cost.
:
来源:
SqlFiddle
目的地:
CREATE TABLE test(
Prop_id varchar(10),
year varchar(4),
cost float(8)
)
答案 0 :(得分:1)
这是一个简单的PIVOT
:.
INSERT INTO Flip(Prop_id, y1997, y1998, y1999, y2000, y2001, ... )
SELECT prop_id, [1997], [1998], [1999], [2000], [2001], ...
FROM
test
PIVOT
(
SUM(cost)
for year IN ([1997], [1998], [1999], [2000], [2001], ...)
)pvt;
如果您不想手动指定列名称,可以将其更改为dynamic query like so。
一个可能的建议是更改翻转y1997
等的列以匹配与源表相同的类型(test.cost
)
如果可能的话,使用DECIMAL
来模拟货币 - 由于rounding issues