Konvertieren Multi-Spalten zu Zeilen

Ich habe ein legacy-Tabelle mit den folgenden Spalten.

Create Table test
( id varchar(50)
, code1 varchar(50)
, codeDesc1 varchar(50)
, code2 varchar(50)
, codeDesc2 varchar(50)
, code3 varchar(50)
, codeDesc3 varchar(50)
, code4 varchar(50)
, codeDesc4 varchar(50)
, code5 varchar(50)
, codeDesc5 varchar(50)
, code6 varchar(50)
, codeDesc6 varchar(50)
)

insert into test (id, code1, codeDesc1, code2, codeDesc2, code3, codeDesc3, code4, codeDesc4, code5, codeDesc5, code6, codeDesc6)
values ('1','100.1', 'first code','100.2', 'Second code','100.3', 'Third code','100.4', 'Fourth code','100.5', 'Fifth code','100.6', 'Sixth code')

insert into test (id, code1, codeDesc1, code2, codeDesc2, code3, codeDesc3, code4, codeDesc4, code5, codeDesc5, code6, codeDesc6)
values ('2','100.1', 'first code','100.2', 'Second code','100.3', 'Third code','100.4', 'Fourth code','100.5', 'Fifth code','100.6', 'Sixth code')

select * from test

gibt, wie folgenden:

id, code1, codeDesc1, code2, codeDesc2, code3, codeDesc3, code4, codeDesc4, code5, codeDesc5, code6, codeDesc6

1,100.1, first code,100.2, Second code,100.3, Third code,100.4, Fourth code,100.5, Fifth code,100.6, Sixth code

2,100.1, first code,100.2, Second code,100.3, Third code,100.4, Fourth code,100.5, Fifth code,100.6, Sixth code

Aber ich möchte die Daten zurück, wie unten dargestellt:

ID, Code, Description

1, 100.1, First Code
1, 100.2, Second Code
1, 100.3, Third Code
1, 100.4, Fourth Code
1, 100.5, Fifth Code
1, 100.6, Sixth Code
2, 100.1, First Code
2, 100.2, Second Code
2, 100.3, Third Code
2, 100.4, Fourth Code
2, 100.5, Fifth Code
2, 100.6, Sixth Code

Kann mir jemand helfen, wie zu tun, bitte?

Habe ich versucht die UNPIVOT aber hat mir nicht die genauen Ergebnisse, die ich suchte. Hier ist die Abfrage, die ich verwendet, aber Sie muss optimiert werden, um die genaue Ergebnis, wo ich bin finden der schwierigen Zeit.

SELECT Id, FieldCode , FieldValue
    FROM 
    (
        SELECT  id, code1, codeDesc1, code2, codeDesc2, code3, codeDesc3, code4, codeDesc4, code5, codeDesc5, code6, codeDesc6
        FROM test
    ) MyTable
    UNPIVOT
    (FieldValue FOR FieldCode IN (code1, codeDesc1, code2, codeDesc2, code3, codeDesc3, code4, codeDesc4, code5, codeDesc5, code6, codeDesc6))AS MyUnPivot

Danke für Eure Hilfe im Voraus.

  • Was ist das ? SQL oder ähnliches ? Kennzeichnen Sie bitte entsprechend
  • Wollen Sie DB, um eine Ausgabe ähnlich, oder wollen Sie einige Programmier-Sprache zu drucken wie?
  • Vielen Dank für Ihre Antwort. Ja, ich brauche die Abfrage zu tun, die transformation, da habe ich zu nehmen Sie diese Informationen und update einer anderen Tabelle. Ich weiß, ich könnte verwenden von Cursorn, aber ich weiß nicht, wie Cursor und ich weiß, es ist ein Weg, es zu tun mit PIVOT/UNPIVOT-Befehle, aber etwas fehlt und ich sehe es nicht.
  • Da ich keine Antwort auf meine eigene Frage jetzt, hier ist die Auflösung:
InformationsquelleAutor Vincy | 2011-10-31
Schreibe einen Kommentar