Ausgabe der Datensätze steuern

Dani Düsentrieb

Neuer Benutzer
Beiträge
1
Hallo Zuusammen,

ich habe eine etwas kniffelige Aufgabe. Es sollen zwei Tabellen abgefragt werden. Tabelle 1 beinhaltet Belege und Tabelle 2 beinhaltet die Positionen auf den Belegen. Nun soll die Ausgabe für einen Beleg sich so gestalten das zunächst die Belegdaten ausgegeben werden also in der Reihenfolge:
Belegnummer, Datum, Name, Vorname, Straße, Ort

In de nächsten Zeilen sollen dann in den gleichen Spalten die Positionen des Beleges kommen. Das bdeutet in der Belegnummer steht die Pos. in der Spalte Datum steht die Artikel Bezeichnung usw. Sind alle Positionen enthalten wird mit den nächsten Beleg genau so verfahren bis alle fertig sind. Ob in der Zeile Positionen oder Belegdaten entahlten sind wird durch die Spalte Art bestimmt. Entweder ein H für Beleginfos oder ein P für die Positionen.

Kann ich so etwas Darstellen?
 
Werbung:
Kann man machen, via UNION. Passe auf, daß die den Spalten bessere Namen dann gibst.

Code:
test=*# select * from belege ;
 nummer |  datum  |  name  |  ort   
--------+------------+----------+---------
  2 | 2016-11-01 | Belege 1 | Berlin
  5 | 2016-12-01 | Belege 2 | Dresden
(2 Zeilen)

test=*# select * from positionen ;
 beleg | artikel |  art_name  | anzahl
-------+---------+--------------+--------
  2 |  4711 | artikel 4711 |  2
  2 |  4712 | artikel 4712 |  12
  2 |  4713 | artikel 4713 |  5
  5 |  5555 | artikel 5555 |  3
  5 |  6666 | artikel 6666 |  6
(5 Zeilen)

test=*# select 'H' as typ, b.nummer::text, b.datum::text, b.name, b.ort from belege b union select 'P', p.beleg::text, p.artikel::text, p.art_name, p.anzahl::text from positionen p order by nummer, typ;
 typ | nummer |  datum  |  name  |  ort   
-----+--------+------------+--------------+---------
 H  | 2  | 2016-11-01 | Belege 1  | Berlin
 P  | 2  | 4713  | artikel 4713 | 5
 P  | 2  | 4712  | artikel 4712 | 12
 P  | 2  | 4711  | artikel 4711 | 2
 H  | 5  | 2016-12-01 | Belege 2  | Dresden
 P  | 5  | 6666  | artikel 6666 | 6
 P  | 5  | 5555  | artikel 5555 | 3
(7 Zeilen)

test=*#
 
Zurück
Oben