X/Y-Transformation

18/08/2008 - 13:43 von Christian Winther | Report spam
Hallo NG,

ich habe folgendens Problem (MS SQL-Server):

Daten liegen in folgender Form vor

Owner | Member | Text1
+--+-
O1 | M1 | O1M1T1
O1 | M1 | O1M1T2
O1 | M1 | O1M1T3
O1 | M2 | O1M2T1
O1 | M3 | O1M3T1
O1 | M3 | O1M3T2
O1 | M3 | O1M3T3
O1 | M3 | O1M3T4
..
O1 | M3 | O1M3T..
O1 | M4 | O1M4T1
...
O1 | Mn | O1MnT1
O1 | Mn | O1MnT..
.
Ox | M1 | OxM1T1
Ox | M1 | OxM1T2
Ox | M1 | OxM1T3
Ox | M2 | OxM2T1
Ox | M3 | OxM3T1
Ox | M3 | OxM3T2
Ox | M3 | OxM3T3
Ox | M3 | OxM3T4
..
Ox | M3 | OxM3T..
Ox | M4 | OxM4T1
...
Ox | Mn | OxMnT1
Ox | Mn | OxMnT..
.


Jedes Tupel (Ox,My) kann z.Bsp. 1-10 Texte (Text1) haben.

Ich möchte die Texte pro Tupel (Ox,My) in einer Zeile/in einem Feld haben.

Owner | Member | TextGesamt
+--+-
O1 | M1 | O1M1T1 O1M1T2 O1M1T3
O1 | M2 | O1M2T1 O1M3T1 O1M3T2 O1M3T3 O1M3T4
O1 | M3 | O1M3T..
O1 | M4 | O1M4T1


Im konkreten Fall werden immer die Werte für einen definierten Wert für
Owner benötigt.

Bisher löse ich das durch eine UDF (userdefined function), welche als
Input-Parameter den Wert für "Owner" übergeben bekommt und eine Tabelle
mit Werten zurückliefert. Das Verketten der Text1-Werte zu TextGesamt
erfolgt durch eine Cursor-Fetch-Loop + Update.

Fragen:

1. Gibt es ein SQL-Statement, welches elegant die Cursor-Fetch-Loop +
Update ersetzen könnte?

2. Die Tabelle mit den Werten soll die Grundlage für ein Excel-Sheet
bilden. Die Abfrage soll anhand eines Eingabe-Paramters (Owner)
dynamisch erzeugt werden. Excel/MSQuery (bis 2003) kann aber mit UDF's
nichts anfangen. Abhilfe: Man erzeugt in der DB eine VIEW, welche per
UDF gefüllt wird. Das hat aber den Nachteil, dass ich nicht von
vornherein auf den gewünschten Owner einschrànken kann.

Any Ideas?

MfG CW
 

Lesen sie die antworten

#1 Christoph Ingenhaag
18/08/2008 - 13:54 | Warnen spam
Hi Christian,

welche SQL Server Version?

Vg
Christoph

Ähnliche fragen