我有这个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