2015-05-10 64 views
2

我有一個表有三列: - 名稱,COL1,COL2移調數據創建一個表

我需要創建另一個表COL1爲列,COL2作爲值。有人可以給我一個想法。

這是源:

Name  col1   col2 
details Company  Microsoft 
details Employees 300 
details City   New York 
details2 Company  Apple 
details2 Employees 450 
details2 City   Boston 

我需要一個表像這樣

Company Employees City 
Microsoft 300   NewYork 

細節和另一個表details2這樣的:

Company Employees City 
    Apple  450   Boston 
+1

不是很清楚,什麼是例如使用字段'name'的? –

+0

嗨,我已編輯我的問題。謝謝。 – rozatrra

+1

您是否需要一個表格作爲輸出或每個不同名稱列的單獨表格?如果是的話,那麼爲什麼你需要單獨的專用於NAME專欄的表格......你一次又一次地改變你的問題......每一個具體的條件......它更好地把所有你的需求一次性提出來,以便其他人可以有清楚的想法你需要什麼 – HaveNoDisplayName

回答

2

你可以把你一列值作爲表格列和第二列值作爲行像這樣

第一種方法: - SAMPLE SQL FIDDLE

Select  
MAX(case when col1 = 'Company' then col2 end) Company, 
MAX(case when col1 = 'Employee' then col2 end) Employee, 
MAX(case when col1 = 'City' then col2 end) City 
From test 
Group By name 

編輯

第二種方法: - SQL FIDDLE

DECLARE @QUERY NVARCHAR(MAX), @Soucecolumn VARCHAR(MAX) 
SET @Soucecolumn = STUFF((SELECT distinct ',[' + [col1 ] + ']' FROM test FOR XML PATH('')),1,1,'') 
SET @QUERY = 'SELECT ' + @Soucecolumn + ' FROM test PIVOT (MAX(col2) FOR [col1 ] IN (' + @Soucecolumn + ')) AS pvt' 
exec sp_executesql @QUERY 
+0

thx,它的工作原理,但是,如果我有col1上的n行和不同的名稱值。我想把它放在一個sp中。 – rozatrra

+0

請參閱編輯回答,第二種方法 – HaveNoDisplayName

+0

我收到此錯誤:在PIVOT運算符中指定的列名「value(col1)」與PIVOT參數中的現有列名衝突。 – rozatrra