Mehrere Datensätze als 1 Datensatz zusammenfassen, Spalten ergänzen

Schobbeschorle

Benutzer
Beiträge
9
Folgende Abfrage

T0.[ItemCode], T1.[AltItem] AS 'Alternativartikel'
FROM OITM T0 INNER JOIN
OALI T1 on T0.ItemCode = T1.OrigItem

liefert folgendes Ergebnis (400 003 001 ist doppelt!)

32 | 400 003 001 | 400 003 417
33 | 400 003 001 | 400 003 833

Die Wunschtabelle sollte aber so aussehen
32 | 400 003 001 | 400 003 417 | 400 003 833

Wie muss die Abfrage lauten?
 
Werbung:
Folgende Abfrage

T0.[ItemCode], T1.[AltItem] AS 'Alternativartikel'
FROM OITM T0 INNER JOIN
OALI T1 on T0.ItemCode = T1.OrigItem

liefert folgendes Ergebnis (400 003 001 ist doppelt!)

32 | 400 003 001 | 400 003 417
33 | 400 003 001 | 400 003 833

Die Wunschtabelle sollte aber so aussehen
32 | 400 003 001 | 400 003 417 | 400 003 833

Wie muss die Abfrage lauten?

Zeig ein CREATE TABLE Deiner Tabellen. Das sieht, forsichtig formuliert, krank aus.
 
Steh auf dem Schlauch, welche Informationen brauchst du genau?

Schau mal, Dein bruchstückhaftes SQL, welches unvollständig ist, hat z.B. im Select-Teil 2 Spalten, das gezeigte Resultat aber schon mal 3. Du zeigst als nur ein kaputtes Select-Statement, welche Spalten mit welchen datentypen Deine Tabellen haben ist Dein großes Geheimnis. Und wir sollen nun erraten, was Du da an Tabellen hast, was die für Spalten haben und so.

Nö.
 
Ok, ich versuche es anders:

Tabelle OALI
|OrigItem |AltItem |
|400 003 002|400 003 418 |
|400 003 002|400 004 251 |
|400 003 002|400 004 251 |

Wie man sieht sind in der ersten Spalte mehrere doppelte Werte. Nun sollen aus diesen 3 Datensätzen ein Datensatz erstellt werden der so aussieht:
|400 003 002 |400 003 418 |400 004 251 | 400 004 251 |
 
Ok, ich versuche es anders:

Tabelle OALI
|OrigItem |AltItem |
|400 003 002|400 003 418 |
|400 003 002|400 004 251 |
|400 003 002|400 004 251 |

Wie man sieht sind in der ersten Spalte mehrere doppelte Werte. Nun sollen aus diesen 3 Datensätzen ein Datensatz erstellt werden der so aussieht:
|400 003 002 |400 003 418 |400 004 251 | 400 004 251 |


Vermutlich mit unterschiedlich vielen Datensätzen? Nein, das ist eher schlecht. Du kannst das in einer Spalte aggregieren, nicht aber in eine Tabelle mit je Row unterschiedlich vielen Spalten.
 
Lösung sieht erstmal so aus:

Code:
Select distinct ST2.OrigItem,
    substring(
        (
            Select ','+ST1.AltItem  AS [text()]
            From dbo.OALI ST1
            Where ST1.OrigItem = ST2.OrigItem
            ORDER BY ST1.OrigItem
            For XML PATH ('')
        ), 2, 1000) [Students]
From dbo.OALI ST2
 
Werbung:
Zurück
Oben