Textzeilen in einem Datensatz abfragen

Stefano

Neuer Benutzer
Beiträge
2
Hallo zusammen

Ich frage die Artikelnummer 0904911 in der Tabelle PFARTSTA (Artikelstamm) mit dazugehörenden mehrzeiligen Artikeltexten in der Tabelle PFARTTXT ab (Tabellen-Join).

Der Artikel 0904911 besitzt in der Sprache D (ATXPRA) insgesamt 1-20 Textzeilen (ATXZEI).

Entsprechend werden 20 Datensätze mit den Textzeile (ATXTXT) aufgelistet (siehe Bild).

Gerne möchte ich die Abfrage aber so gestalten, dass nicht 20 Datensätze aufgelistet werden, sondern alle Textzeilen 1-20 in nur einem Datensatz aufgelistet werden.

Beispiel: .. ATXZEI1 │ATXTXT1│ATXZEI2│ATXTXT2│ATXZEI3│ATXTXT3ATXZEI..20│ATXTXT..20│

Könnte mir bitte jemand weiterhelfen?

Herzlichen Dank und Grüsse
Stefano
 

Anhänge

  • Screen Shot 11-27-19 at 12.02 PM.JPG
    Screen Shot 11-27-19 at 12.02 PM.JPG
    355,4 KB · Aufrufe: 3
Werbung:
achtung, mit PostgreSQL:

Code:
andreas@[local]:5434/test# select * from stefano;
 artikel
---------
    4711
(1 row)

andreas@[local]:5434/test# select * from stefano_texte ;
 artikel | zeile |  info   
---------+-------+---------
    4711 |     1 | zeile 1
    4711 |     2 | zeile 2
    4711 |     3 | zeile 3
(3 rows)

-- Variante 1

andreas@[local]:5434/test# select s.artikel, string_agg(st.info,', ') from stefano s left join stefano_texte st on s.artikel= st.artikel group by s.artikel;
 artikel |        string_agg         
---------+---------------------------
    4711 | zeile 1, zeile 2, zeile 3
(1 row)


-- Variante 2

andreas@[local]:5434/test# select s.artikel, string_agg(st.info,'') filter (where st.zeile = 1) as z1, string_agg(st.info,'') filter (where st.zeile=2) as z2, string_agg(st.info,'') filter (where st.zeile = 3) as z3 from stefano s left join stefano_texte st on s.artikel=st.artikel group by s.artikel;
 artikel |   z1    |   z2    |   z3   
---------+---------+---------+---------
    4711 | zeile 1 | zeile 2 | zeile 3
(1 row)

Variante 2 geht nur, wenn da immer eine konstante Anzahl von Textzeilen existiert.
 
Werbung:
Zurück
Oben