Mehrere SELECT in einer Abfrage

Das Problem ist der Versatzt in den Zeilen,
Seltsam, zeig doch dazu das Select und am besten das Original Ergebnis im Abfragetool.

Ich sehe auch keinen erkennbaren Zusammenhang zwischen Textbeschreibung des Problems und dem Bild. AKG... hat nirgendwo im Bild Werte eingetragen.
Welcher Versatz gefällt Dir nicht, der in Spalten oder der in Zeilen?
 
Werbung:
Seltsam, zeig doch dazu das Select und am besten das Original Ergebnis im Abfragetool.

Ich sehe auch keinen erkennbaren Zusammenhang zwischen Textbeschreibung des Problems und dem Bild. AKG... hat nirgendwo im Bild Werte eingetragen.
Welcher Versatz gefällt Dir nicht, der in Spalten oder der in Zeilen?
Hier nochmal der Select:
SELECT
(Case When Stationsadresse = 'AKG01' Then le_nummer End) AS AKG1,
(Case When Stationsadresse = 'AKG02' Then le_nummer End) AS AKG2,
(Case When Stationsadresse = 'AKG03' Then le_nummer End) AS AKG3,
(Case When Stationsadresse = 'AKG04' Then le_nummer End) AS AKG4,
(Case When Stationsadresse = 'AKG05' Then le_nummer End) AS AKG5,
(Case When Stationsadresse = 'AKG06' Then le_nummer End) AS AKG6,
(Case When Stationsadresse = 'AKG07' Then le_nummer End) AS AKG7,
(Case When Stationsadresse = 'AKG08' Then le_nummer End) AS AKG8,
(Case When Stationsadresse = 'KEG01' Then le_nummer End) AS KAB3,
(Case When Stationsadresse = 'KEG02' Then le_nummer End) AS KAB2,
(Case When Stationsadresse = 'KEG03' Then le_nummer End) AS KAB1,
(Case When Stationsadresse = 'KEG04' Then le_nummer End) AS KAB4,
(Case When Stationsadresse = 'KOG02' Then le_nummer End) AS KAB5,
(Case When Stationsadresse = 'KOG03' Then le_nummer End) AS KAB6,
(Case When Stationsadresse = 'KOG04' Then le_nummer End) AS KAB7,
(Case When Stationsadresse = 'KOG05' Then le_nummer End) AS KAB8,
(Case When Stationsadresse = 'KOG06' Then le_nummer End) AS KCD9,
(Case When Stationsadresse = 'KOG07' Then le_nummer End) AS KCD10,
(Case When Stationsadresse = 'KOG08' Then le_nummer End) AS KCD11,
(Case When Stationsadresse = 'KOG09' Then le_nummer End) AS KCD12,
(Case When Stationsadresse = 'KZG01' Then le_nummer End) AS KCD13,
(Case When Stationsadresse = 'KZG02' Then le_nummer End) AS KCD14,
(Case When Stationsadresse = 'KZG03' Then le_nummer End) AS KCD15
FROM
transportanmeldung

Das Abfrageergebnis als Bild, dort siet mann "AKG08" 2 Werte und die nächsten Werte in "KAB05" und dies sind dann in den Zeilen um 2 tiefer , sollen aber oben stehen.
Der Versatz in den Zeilen stört mich.

2024-09-13 09_12_41-Oracle SQL Developer .webp
 
Die Werte kommen aus unterschiedlichen Zeilen der Tabelle, also werden sie auch in unterschiedlichen Zeilen dargestellt.

Wie genau soll denn das Ergebnis aussehen das Du möchtest?

Letztendlich kannst Du das nur auf eine Zeile reduzieren indem Du alle Werte einer Spalte als Komma separierte Liste anzeigst (siehe mein listagg() Beispiel)
 
Das mit listagg() habe ich probiert und scheint mir die einzige Alternative zu sein.
Ich muss den das Ergebniss wieder in meinem Tool zum Anzeigen trennen.

Ich danke euch allen für die schnelle Hilfe.
 
Letztendlich kannst Du das nur auf eine Zeile reduzieren indem Du alle Werte einer Spalte als Komma separierte Liste anzeigst (siehe mein listagg() Beispiel)
...oder es mit sehr viel "gefrickel" joinen.

Erst eine Nummerierung und die Tabelle mit WITH und Alias bereit stellen. Dann mit FULL OUTER JOIN auf die Zeilennummer joinen. Schön ist aber anders...
Code:
WITH t1 AS (
SELECT le_nummer AS AKG1,
ROW_NUMBER() OVER (ORDER BY le_nummer) AS zeile
FROM transportanmeldung
WHERE Stationsadresse = 'AKG01'
), t2 AS (
SELECT le_nummer AS AKG2,
ROW_NUMBER() OVER (ORDER BY le_nummer) AS zeile
FROM transportanmeldung
WHERE Stationsadresse = 'AKG02'
)
SELECT AKG1,
AKG2
FROM t1
FULL OUTTER JOIN t2
ON t1.zeile = t2.zeile
 
Werbung:
Das mit listagg() habe ich probiert und scheint mir die einzige Alternative zu sein.
Ich muss den das Ergebniss wieder in meinem Tool zum Anzeigen trennen.
Wen Du das in der Anwendung wieder trennen musst, wäre eine Aggregation in ein JSON Array vermutlich einfacher

Code:
json_arrayagg(Case When Stationsadresse = 'AKG01' Then le_nummer End) AS AKG1,

Oder gleich das gesamte Ergebnis in ein JSON bringen:

Code:
SELECT json_objectagg(key Stationsadresse value json_arrayagg(le_nummer))
from transportanmeldung
group by Stationsadresse
 
Zurück
Oben