Abfrage über Tabellen deren Name in einer Tabelle stehen

Werbung:
Es gibt viele Möglichkeiten, unter anderem hatte ich ja oben schon gezeigt wie man die per UNION verbunden Tabellen in einem Subselect nochmal sortieren bzw. gruppieren kann, eventuell ist das auch komfortabler.
 
Genau so versuche ich das. In dem Subselect kann ich auch sortieren und gruppieren. Perfekt, soweit. Dafür schon mal danke.

Nur hatte ich bislang ein FIRST und eine Gruppierung für die Sortierung (s.o.) und das FIRST gibt es nur in ACCESS. Das FIRST liefert immer den ersten aus einer Gruppe eines Teilergebnisses in Kombination mit GROUP BY und kann je Spalte angewendet werden wie z.B. MAX oder MIN. Ein TOP 1 würde insgesamt nur eine Zeile liefern für die ganze Abfrage.

Sprich: Gruppierung auf PLZ, sortiere nach gelöscht oder nicht, dann nach dem Löschdatum und picke den jeweils ersten der Ergebnisgruppe. Dann weiter mit der nächsten PLZ.

Jetzt versuche ich das FIRST in MSSQL nachzubilden. Vielleicht kriegt man die Sortierung mit einem weiteren Subselect (inklusive einem TOP 1) für das FIRST hin oder mit dem PARTITION BY. Noch passen die Ergebnisse bei mir nicht.
 
Werbung:
Code:
WITH Query1 AS
   (
          SELECT DISTINCT
            ROW_NUMBER() OVER(PARTITION BY plz ORDER BY geloescht DESC, enddate DESC) As    ROWNUM,
            ...
          FROM
          (
            SELECT    m.id,
            m.tabelle-x,
            m.id-x,
            m.plz,
            m.geloescht,
            x1.enddatum AS enddatum
            FROM    main m
            LEFT JOIN x1 ON m.id-x = x1.id
            WHERE    m.tabelle-x = 'x1'

            UNION ALL

            SELECT    m.id,
            m.tabelle-x,
            m.id-x,
            m.plz,
            m.geloescht,
            x2.enddatum AS enddatum
            FROM    main m
            LEFT JOIN x2 ON m.id-x = x2.id
            WHERE    m.tabelle-x = 'x2'

             ...

          ) Tbl1

          WHERE
            ...
   )

SELECT
   ...
FROM
   Query1
WHERE
   ROWNUM = 1
ORDER BY
   ...



Das scheint es dann gewesen zu sein. Hätte ich nicht gedacht, dass man das so zusammen kriegt. Das geht wahrscheinlich noch eleganter, wenn man die Row_Number irgendwo anders unterbringen könnte. Ich will die nur nicht mit in der Ausgabe haben. In die SELECTS der UNIONS geht es nicht sonst erhält man die PLZ je Tabelle-x.

Vielen Dank für die Hilfe.
 
Zuletzt bearbeitet:
Zurück
Oben