2015-04-02 117 views
0

我想編寫一個查詢來複制從一個表中設置的行到另一個表以這種格式插入與列多行分爲單列

Table 1 
ColumnName  ColumnValue RowId 

Column1    Value1   1 
Column2    Value2   1 
Column3    Value3   1 
Column1    Value4   2 
Column2    Value5   2 
Column3    Value6   2 
Column1    Value7   3 
Column2    Value8   3 
Column3    Value9   3 

Table2 
Column1   Column2  Column3 
Value1   Value2  Value3  
Value4   Value5  Value6 
Value7   Value8  Value9   

這裏基本上表1是輸入和表2是我正在嘗試輸出。我使用了數據透視表和行號,但都沒有工作。

什麼是插入查詢來實現這一點。這裏來自表1的rowId 1的所有行將形成table 2的一行。

+1

是否總是有一定數量的列? – Hogan 2015-04-02 22:19:38

+0

是的,只有3列。列名僅爲唯一。我嘗試在列上旋轉,但無法使用它插入插入。 – James 2015-04-02 22:20:25

回答

1
select rowID, 
     max(case when columnName = 'Column1' then value else null end) as column1, 
     max(case when columnName = 'Column2' then value else null end) as column2, 
     max(case when columnName = 'Column3' then value else null end) as column3 
from table1 
group by rowID 
+0

謝謝,但我必須編寫一個插入查詢,以便在表2中轉儲數據。 – James 2015-04-02 22:24:28

+0

好的,爲什麼這個問題只是在代碼之前插入表2(c1,c2,c3,c4)'以上。 – Hogan 2015-04-02 22:26:36

+0

在我的情況下,value列是文本列,max不允許在其上。此外,而不是越來越一行我得到3行用空了另外兩列,列1 \t列2欄3 值1 NULL \t NULL NULL值2 \t NULL \t NULL NULL \t \t值3 – James 2015-04-02 22:33:18