SQL Server 2005, drehen, Spalten zu Zeilen
Ich versuche aus einer Tabelle um 90 Grad: Spalten Zeilen machen. Keine PIVOT ist zulässig, da PIVOT erfordert Aggregatfunktionen.
Beispiel:
Ich habe eine Tabelle mit den Spalten:
- ID, int","
ISO char(2),
Text varchar(255).
Also ich habe diese:
ID ISO Text -- --- ---- 1 DE Auto 2 de Auto
Ich würde gerne die folgenden:
ID EN DE -- --- ---- 1 Auto Auto
Wie bewerkstelligen Sie das?
- Ihre Frage ist zu vage. Bitte klären Sie Ihrem Beispiel, und Leerzeichen verwenden!
- Sollte nicht die zweite Zeile der ersten Tabelle, werden "1" EN Auto"?
- So interessant die Frage ist, schlage ich vor, Sie beschreiben, was Sie versuchen zu erreichen, in der end.. ich habe das Gefühl, Sie lösen könnte, was Sie zu tun versuchen, OHNE sich Ihren Tisch in eine umgesetzt monster.
- Re-Lesen Sie die Frage, die OP ist versuchen zu tun, eine pivot-Abfrage, ohne einen pivot.
- +1 ich hatte ein ähnliches problem gestern
- Was den Geschmack von SQL sind Sie welche? SQL2000, 2005, 2008, MySQL, Oracle..?
- Kev, der Titel sagt SQL Server 2005.
- Nur um zu erklären, warum ich brauchte diese Funktionalität: wir haben teh Tabelle: Texte, die die ID -, ISO -, Text-Spalten. ID und ISO-PK und eindeutig sind. Wenn wir wollen, zu bitten, das Geschäft für die übersetzungen brauchen wir zum erstellen einer CSV-user-freundlich ist: ID, Text(EN), Text(DE). Ich hoffe, das macht es klar.
- Dies ist nicht ein Fall von Spalten in Zeilen, sondern mehrere Zeilen in der kombinierten Zeile
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Antwort ist wirklich frantisek s, Ich bin nur die Kopie hier, um den Fehler zu beheben (kann ich nicht direkt Bearbeiten).
Im Grunde, verwenden Sie die Lösung, mit einem tweak:
Diese erhalten den Inhalt in einer einzigen Zeile. Auch lässt es die ID, da es nicht Sinn machen, wenn Sie möchten, eine einzelne Zeile (es gibt keine Logik, um zu zeigen, was zu tun ist, wenn die Kombination in einer einzigen Zeile).
Auch die Annahme gemacht, dass die Werte in der ISO-Spalte eindeutig sind, sonst gehen Daten verloren aufgrund der
MAX
- Aggregat.Fand ich die Lösung wie der folgenden:
Es ist möglich, drehen mit MAX-Aggregation-Funktion über den text.
Abfrage ohne eine PIVOT-auch wenn andere Antworten, die beweisen, dass Sie kann Verwendung eines PIVOT 🙂
Wenn Sie versuchen, diese Lösung und bekommen Sie einen syntax-Fehler setzen Sie den Kompatibilitätsmodus der Datenbank über
Damit wird die Kompatibilität zu SQL Server 2005 und die oben genannten Abfragen ausführen, w/o einen syntax-Fehler.
Da Sie ausdrücklich gefragt, für eine nicht-pivot-Lösung: dies sollte funktionieren, wenn Sie wissen, welche ISOs Sie werden in den Zeilen. Ich rief die Tabelle "Test".