Suche T-SQL: Erste Zeile = 1. Spalte, Zweite Zeile = 2. Spalte...

02/12/2008 - 20:17 von Adrian Thomale | Report spam
Hallo!

Ich habe eigentlich ein triviales Problem:
Eine Tabelle liefert mir zu einer zu übergebenden ID zwischen 1 und
max. 3 Zeilen. (Falls mehr, nicht weiter zu berücksichtigen). Nun
sollen daraus mit einer SQL-Anweisung diese als feste Spalten einer
Abfrage ausgegeben werden.

Z.B. liefert mir eine Unterabfrage für die Spalten Name und Vorname
für die AbteilungID = 5 die Datensàtze:

Name Vorname
Mayer Thomas
Müller Heinz
Kunze Klaus

Eine Selectanweisung soll mir diese Datensàtze aus den Spalten Name
und Vorname spaltenweise ausgegeben:

Personalname1 Personalname2 Personalname3
-
Mayer, Thomas Müller, Heinz Kunze, Klaus
Falls z.B. nur 2 Zeilen ermittelt wurden entsprechend:
Mayer, Thomas Müller, Heinz <NULL>

Das ganze sollte als schnelle Abfrage in eine feste View eingebaut
werden, die entsprechend um die drei feste Spalten ergànzt wird.

Ist sowas möglich? (SQL Server 2000)
Ich komme leider gerade nicht weiter.

Danke für Hinweise!
Grüße, Adrian
 

Lesen sie die antworten

#1 Thomas Gloerfeld
02/12/2008 - 23:40 | Warnen spam
Adrian Thomale wrote:

Ich habe eigentlich ein triviales Problem:
Eine Tabelle liefert mir zu einer zu übergebenden ID zwischen 1 und
max. 3 Zeilen. (Falls mehr, nicht weiter zu berücksichtigen). Nun
sollen daraus mit einer SQL-Anweisung diese als feste Spalten einer
Abfrage ausgegeben werden.

Z.B. liefert mir eine Unterabfrage für die Spalten Name und Vorname
für die AbteilungID = 5 die Datensàtze:

Name Vorname
Mayer Thomas
Müller Heinz
Kunze Klaus

Eine Selectanweisung soll mir diese Datensàtze aus den Spalten Name
und Vorname spaltenweise ausgegeben:

Personalname1 Personalname2 Personalname3
-
Mayer, Thomas Müller, Heinz Kunze, Klaus
Falls z.B. nur 2 Zeilen ermittelt wurden entsprechend:
Mayer, Thomas Müller, Heinz <NULL>

Das ganze sollte als schnelle Abfrage in eine feste View eingebaut
werden, die entsprechend um die drei feste Spalten ergànzt wird.

Ist sowas möglich? (SQL Server 2000)
Ich komme leider gerade nicht weiter.



Hallo Adrian,

PIVOT ist Dein Freund. Am SQL-Server-2000 geht das wenigstens genauso
schnell mit einem Self-Made-Pivot mittels CASE und GROUP-BY. Ein
Beispiel findest Du hier:
<http://www.glorf.it/blog/2008/05/03...-pivot>
Achtung: Damit es schnell geht, muss ein entsprechender Index (am
besten Clustered) vorhanden sein.

Viele Grüße

Thomas
http://www.glorf.it/blog
Ich unterstütze die SQL-PASS Deutschland (http://www.sqlpass.de)

Ähnliche fragen