Sql server 转置SQL表

Sql server 转置SQL表,sql-server,Sql Server,我想根据Prop\u id将test表格转换为Flip表格。 通过从test.cost. 非常感谢 编辑 表结构取自SqlFiddle: 资料来源: CREATE TABLE test( Prop_id varchar(10), year varchar(4), cost float(8) ) 目的地: CREATE TABLE flip( Prop_id varchar(10), y1997 varchar(4), y1998 varchar(4),

我想根据
Prop\u id
test
表格转换为
Flip
表格。 通过从
test.cost.

非常感谢

编辑

表结构取自
SqlFiddle

资料来源:

CREATE TABLE test(
    Prop_id varchar(10),
    year varchar(4),
    cost float(8)
)
目的地:

CREATE TABLE flip(
   Prop_id varchar(10),
   y1997 varchar(4),
   y1998 varchar(4),
   y1999 varchar(4),
   y2000 varchar(4),
   y2001 varchar(4),
   y2002 varchar(4),
   y2003 varchar(4),
   y2004 varchar(4),
   y2005 varchar(4),
   y2006 varchar(4),
   y2007 varchar(4),
   y2008 varchar(4),
   y2009 varchar(4),
   y2010 varchar(4),
   y2011 varchar(4),
   y2012 varchar(4),
   y2013 varchar(4)    
)

这是一个简单的透视图

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;

如果不想手动指定列名,可以将其更改为

一个可能的建议是更改flip
y1997
等的列,以匹配与源表相同的类型(
test.cost


如果可能的话,使用
DECIMAL
来建模货币-浮动和双倍不适合货币,因为

我需要从测试表中通过填写成本字段中的年份来填充翻转表。您是否计划有一个每年都用新年列扩展的表?谢谢,我只有这两个表STUARTLC,非常感谢你的工作完美如我所愿,我非常感谢你的建议。