Werte zum Sortieren nutzen, aber unterdrücken

Hi.

Kann man eine SQL-Abfrage so gestalten, dass bestimmte Spalten, die Werte enthalten, zwar zum sortieren (SORT BY) benutzt werden, in der Anzeige/Ausgabe diese Werte jedoch unterdrückt werden? So etwas wie „hidden value“?

Danke!
M.

Hintergrund ist:

Ich habe zwei SQL-Teile, die mit UNION verbunden werden.

Der 1. Teil liefert beispielsweise

Sp1  Sp2  Sp3  Sp4  Sp5  Sp6
A1   A2   A3   A4   A5   A6
B1   B2   B3   B4   B5   B6

Der 2. Teil liefert

Sp1  Sp2  Sp3  Sp4  Sp5  Sp6
A1   A2   A3   AX   AX   AX
B1   B2   B3   BX   BX   BX

Nun brauche ich nach dem UNION dieser Teile eine Sortierung (SORT BY Sp1, Sp2),
wobei dann aber die ‚doppelten Werte‘, die jedoch zum Sortieren benutzt werden (u.a. Sp1 und Sp2) unterdrückt werden sollen:

Sp1  Sp2  Sp3  Sp4  Sp5  Sp6
A1   A2   A3   A4   A5   A6
               AX   AX   AX
B1   B2   B3   B4   B5   B6
               BX   BX   BX

(Es ist bekannt, welche Spalten die ‚doppelten Werte‘ enthalten, also immer Sp1, Sp2, Sp3)

Die

hat mit der

doch gar nichts zu tun.

Oder geht es gar nicht um Programmierung?

Mit „Anzeige/Ausgabe“ ist das SQL-Ergebnis gemeint.

BTW: Es ist ferner bekannt, dass alle SQL-Teile, die nach dem 1. SQL kommen diese ‚doppelten Werte‘ haben. D.h. man könnte in diesen einzelnen SQL-Teilen (außer dem 1. Teil) die entsprechenden Spalten leeren, da es ja bekannt ist. Andererseits brauche ich diese Werte, um sie nach dem UNION zu sortieren. Dilemma!

Hast du es mit einer geschachtelten SELECT-Anweiung versucht, also in etwa so:

SELECT a, b  from SELECT col1 as a, col2 as b, col3 from tab SORT BY col3

Ich brauche ja auch col3. Nur eben nicht durchgängig von allen UNION-Teilen.

Sorry, hatte deinen zweiten Beitrag nicht gelesen. Ich halte das für keine gute Idee, denn tatsächlich sind die Werte ja nicht leer sondern identisch mit dem Wert in der vorherigen Zeile. Das ist eigentlich Sache des Anzeigeprogramms.

SELECT a, b, c FROM (UNION ...) ORDER BY d

Ist allerdings nicht besonders performant.

Naja, kommt darauf an, was man mit „Anzeigeprogramm“ meint - bei Oracle nennt man das „analytische Funktionen“, egal, welches „Anzeigeprogramm“ man benutzt.

Zum Grundproblem: Lege ein Select „über“ die Union-Abfrage:
select ... from (select from ... union select from ... order by ...)

Grundsätzlich muss ein Sortierungsfeld in der Select-Liste nicht vorkommen - ist aber leider von DB-System zu DB-System verschieden.

Grüße,
Tomh

Der Kern der Frage ist, wie man erreichen kann, dass ein Wert, der identisch mit dem Wert derselben Spalte in der vorhergehenden Zeile ist, durch eine leere Zeichenkette, NULL oder anderes ersetzt wird. Darauf bezog sich meine Antwort.

Meine auch, da gibt es eben beispielsweise unter Oracle einiges an analytischen group-by-Funktionalitäten.
(Obwohl ich zugeben muss, dass das eher Zufall war, denn ich habe nur das Sort-Problem gelesen … ja ich weiß, man sollte alles lesen …)

Aber ohne RDBMS ist es Glaskugelraten.

Grüße,
Tomh