我有這個SQL服務器:轉換多列到一個列
name1 name2 name3 value1 value2 value3
A B C 1 2 3
我真的需要這個
Name Value
A 1
B 2
C 3
請幫助我。
我有這個SQL服務器:轉換多列到一個列
name1 name2 name3 value1 value2 value3
A B C 1 2 3
我真的需要這個
Name Value
A 1
B 2
C 3
請幫助我。
您可以使用union
select name1 as Name, value1 as Value from mytable
union
select name2, value2 from mytable
union
select name3, value3 from mytable
謝謝! scaisEdge ..你救了我的一天.. – Jhon
使用下面的查詢..萬一UNION ALL執行緩慢或只是爲了顯示一種替代
Select name1 Name,value1 Value from YourTable
Union all
Select name2 ,value2 from YourTable
Union all
Select name3 ,value3 from YourTable
謝謝Unnikrishman R .. – Jhon
臨時表方法....
DECLARE @Table as TABLE (name1 CHAR(1), name2 CHAR(1), name3 CHAR(1), value1 INT, value2 INT, value3 INT)
INSERT INTO @Table VALUES ('A','B','C',1,2,3)
IF OBJECT_ID('tempdb..#TempTable') IS NOT NULL
BEGIN
DROP TABLE #TempTable
END
SELECT name1 as Name, value1 as Value
INTO #TempTable
FROM
@Table
INSERT INTO #TempTable
SELECT name2, value2
FROM
@Table
INSERT INTO #TempTable
SELECT name3, value3
FROM
@Table
SELECT *
FROm
#TempTable
[Unpivot](http://www.databasejournal.com/features/mssql/converting-rows-to-columns-pivot-and-columns-to-rows-unpivot-in-sql-server.html)是喲你的朋友 –
@ AlexB.If unpivot是他在這種情況下的朋友我敦促你展示一個例子,因爲現實是數據是雙重旋轉和unpivoting一次會讓你的名字成行,但仍然有3個值列未透露第二次會爲您提供名稱與價值的各種組合(9)。在這種情況下,UNION全部或插入臨時表或表變量將是最直接的,即使我仍然可以考慮使用2級unpivot然後條件聚合來實現它。 – Matt
我曾嘗試使用樞軸..指導我類似的情況下,但他們不是我有同樣的情況。 – Jhon