2016-08-26 5 views
0

Ich habe diesesSQL Server: konvertieren mehrere Spalten in einer einzigen Spalte

name1 name2 name3 value1 value2 value3 
    A  B  C  1  2  3 

ich das wirklich brauchen

Name Value 
    A  1 
    B  2 
    C  3 

mir bitte helfen.

+0

[Unpivot] (http://www.databasejournal.com/features/mssql/converting-rows-to-columns-pivot-and-columns-to-rows-unpivot-in-sql-server.html) ist yo Dein Freund –

+0

@ AlexB.Wenn Unpivot sein Freund in diesem Fall ist, fordere ich Sie auf, ein Beispiel zu zeigen, weil die Realität ist die Daten doppelt geschwenkt und einmal unpivoting werden Sie Namen in Zeilen bekommen, aber immer noch 3 Werte Spalten ein zweites Mal pivot geben Sie jede Kombination von Name zu Wert (9). In diesem Fall wird UNION all oder das Einfügen in eine temporäre Tabelle oder Tabellenvariable am einfachsten sein, obwohl ich mir immer noch einen Weg vorstellen kann, um dies mit 2 Ebenen von Unpivot und dann bedingter Aggregation zu tun. – Matt

+0

Ich habe versucht, mit dem Drehpunkt .. Führe mich ähnliche Fälle, aber sie waren nicht der gleiche Fall, wie ich habe. – Jhon

Antwort

1

Sie Vereinigung verwenden kann

select name1 as Name, value1 as Value from mytable 
union 
select name2, value2 from mytable 
union 
select name3, value3 from mytable 
+0

Danke! scaisEdge .. Ihr gespeichert mein Tag .. – Jhon

1

Verwenden Sie die folgende Abfrage ..

Select name1 Name,value1 Value from YourTable 
    Union all 
    Select name2 ,value2 from YourTable 
    Union all 
     Select name3 ,value3 from YourTable 
+0

Vielen Dank Unnikrishman R .. – Jhon

0

Temp-Tabelle Methode bei Union alle führen langsam oder einfach nur eine Alternative zu zeigen ....

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 
Verwandte Themen