Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

SQL - Mehrere Zeilen einer Tabelle bei Gleichheit eines Wertes in einer Zeile

Begonnen von Mankiw, Januar 25, 2024, 10:16:13

⏪ vorheriges - nächstes ⏩

Mankiw

Moin Zusammen, habe mich gerade neu registriert. Kenne mich in Access etwas aus, bei SQL bis jetzt aber recht unbefleckt. Habe folgendes Problem.

Nehmen wir an ich hätte eine Stückliste zu einer TEILE-NR, diese besteht aus zwei Komponenten. In der Abfrage erhalte ich eine Tabelle mit zwei Zeilen, Gleicher Wert bei TEILE-NR. Ich möchte diese nun in einer Zeile darstellen.

Ausgangssituation:
TEILE-NR ! KOMPONENTE-NR ! KOMPONENTE-BEZ
123       ! 456          !   ABC
123        !789          ! XYZ

Gewünschtes Ergebnis:
TEILE-NR ! KOMPONENTE-NR1 ! KOMPONENTE-BEZ1 ! KOMPONENTE-NR2 ! KOMPONENTE-BEZ2
123       ! 456             ! ABC               !789             ! XYZ

Gibt es hierfür eine SQL-Lösung, und wie wäre diese aufgebaut?

Anmerkung:
Es ist vorher nicht bekannt, aus wie vielen Komponenten eine TEILE-NR besteht, sprich die Anzahl der Zeilen sollte möglichst variabel sein.

Vorab vielen Dank.

ebs17

Zwei Zeilen in eine Zeile bekommt man über einen SELF JOIN.
SELECT
   T1.[TEILE-NR],
   T1.[KOMPONENTE-NR] AS Nr1,
   T1.[KOMPONENTE-BEZ] AS B1,
   T2.[KOMPONENTE-NR] AS Nr2,
   T2.[KOMPONENTE-BEZ] AS B2
FROM
   TabelleX AS T1
      INNER JOIN TabelleX AS T2
      ON T1.[TEILE-NR] = T2.[TEILE-NR]
WHERE
   T1.[KOMPONENTE-NR] < T2.[KOMPONENTE-NR]

Bei mehr als zwei Zeilen müsste man die Anweisung statisch (maximale Anzahl bekannt) oder dynamisch ausbauen.
Alternativ kann man über Kreuztabellenabfragen gehen. Diese bieten Flexibilität gegenüber diesen Anzahlen, lassen aber in Normalverwendung nur eine Spalte für die Pivotisierung zu (Nummer oder Bezeichnung).  Man könnte aber zwei Kreuztabellenabfragen verknüpfen und über diesen weiteren Schritt zu der gewünschten Ansicht kommen.
Oder man traut sich das: PIVOT-Anzeige von mehr als einem Inhalt

Mit etwas mehr Sorgfalt bei den Bezeichnungen kann man auf viele Klammern verzichten.
Mit freundlichem Glück Auf!

Eberhard