2014-03-26 44 views
1

我想移調test表到Flip表基於Prop_idSQL Fiddle通過從test.cost.移調SQL表

填充倒裝表Null值非常感謝

編輯從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)  
) 
+0

問題是什麼? – Kaf

+0

我需要通過填寫成本字段中的年份來填充測試表中的翻轉表。 – user2722043

+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; 

SqlFiddle here

如果不想手動指定的列名,就可以變成一個dynamic query like so這一點。

一個可能的建議是改變翻轉y1997等的列相匹配的相同類型源表(test.cost

如果可能的話,使用DECIMAL貨幣模型 - 花車和雙打是一個壞適合錢因rounding issues

+0

StuartLC,非常感謝那份工作完美如我所願,我非常感謝您的建議。 – user2722043

+0

我不介意,謝謝。 – user2722043