Ausgabe
Ich habe eine Beispieltabelle wie diese:
id | Name | code1 | code2
------------------------------
1 | John | 001 | AC2
2 | Anna | 002 | AH5
3 | Brad | 003 | BB1
Ich möchte Spalte code1 und code2 (und eine weitere Spalte, falls vorhanden) in 1 Spalte kombinieren und Daten in einer anderen Spalte in der Tabelle duplizieren, damit das Ergebnis wie folgt lautet:
id | Name | code
-------------------
1 | John | 001
1 | John | AC2
2 | Anna | 002
2 | Anna | AH5
3 | Brad | 003
3 | Brad | BB1
Lösung
Sie müssen ein UNION
oder verwenden UNION ALL
:
SELECT
id,
Name,
code1 As code
FROM
YourTable
UNION
SELECT
id,
Name,
code2 As code
FROM
YourTable
ORDER BY
id,
Name,
code
UNION (Transact-SQL) – SQL Server | Microsoft-Docs
NB: Gemäß Aarons Kommentar unten UNION
werden doppelte Zeilen entfernt, während sie eingeschlossen UNION ALL
werden. Wenn Sie denselben Wert in code1
und code2
auf einer einzelnen Quellzeile haben, UNION
wird eine einzelne Ausgabezeile UNION ALL
erzeugt, während zwei identische Ausgabezeilen erzeugt werden. Aus deiner Frage geht nicht hervor, welches Verhalten du dir wünschen würdest.
Beantwortet von – Richard Deeming
Antwort geprüft von – Jay B. (FixError Admin)