Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

rownum Problem

Dieses Thema im Forum "Oracle" wurde erstellt von db_gustl, 28 Juni 2012.

  1. db_gustl

    db_gustl Benutzer

    Hallo,

    ich habe folgende Abfrage:

    Code:
    SELECT a.BE_IDENT, a.ERSTELLUNGS_DATUM_YMD AS WE_DATUM, COUNT(a.BE_IDENT) AS GEBINDE_ANZAHL, a.AUSGANGS_MENGE FROM EW_BE_EINZELGEBINDE a
      WHERE a.AUSGANGS_MENGE > 0 AND a.ERSTELLUNGS_DATUM_YMD > TO_CHAR(add_months(SYSDATE, -12), 'YYYY-MM-DD') AND a.BE_IDENT = 'A5E00165450'
      AND a.ERSTELLUNGS_DATUM_YMD = (SELECT MIN(ERSTELLUNGS_DATUM_YMD) FROM EW_BE_EINZELGEBINDE sub WHERE sub.WARENEINGANGS_NR = a.WARENEINGANGS_NR AND sub.BE_IDENT = a.BE_IDENT )
    GROUP BY a.BE_IDENT, a.ERSTELLUNGS_DATUM_YMD, a.AUSGANGS_MENGE
    ORDER BY a.ERSTELLUNGS_DATUM_YMD DESC
    Diese ergibt folgendes Ergebnis:
    Code:
    WE_DATUM BE_IDENT GEBINDE_ANZAHL AUSGANGS_MENGE
    2012-04-13 A5E00165450 1  2000
    2012-04-13 A5E00165450 1  18000
    2012-04-13 A5E00165450 9  20000
    2011-07-15 A5E00165450 12 20000
    2011-07-04 A5E00165450 4  20000
    2011-07-01 A5E00165450 6  20000
    
    Dann habe ich eine andere Tabelle die alle BE_IDENTs hat, und nun möchte ich das erste Ergebnis quasi numrow = 1 aus der obigen Tabelle in einer Tabelle haben mit allen BE_IDENTs.

    Also habe ich es folgendermaßen probiert:
    Code:
    SELECT d.BE_IDENT, e.AUSGANGS_MENGE AS LAST_AUSGANGS_MENGE
      FROM EW_BE_EINZELGEBINDE d,
          (SELECT AUSGANGS_MENGE FROM (SELECT a.BE_IDENT, a.ERSTELLUNGS_DATUM_YMD AS WE_DATUM, COUNT(a.BE_IDENT) AS GEBINDE_ANZAHL, a.AUSGANGS_MENGE FROM EW_BE_EINZELGEBINDE a
          WHERE a.AUSGANGS_MENGE > 0 AND a.ERSTELLUNGS_DATUM_YMD > TO_CHAR(add_months(SYSDATE, -12), 'YYYY-MM-DD') AND [B]a.BE_IDENT = d.BE_IDENT[/B]
            AND a.ERSTELLUNGS_DATUM_YMD = (SELECT MIN(ERSTELLUNGS_DATUM_YMD) FROM EW_BE_EINZELGEBINDE sub WHERE sub.WARENEINGANGS_NR = a.WARENEINGANGS_NR AND sub.BE_IDENT = a.BE_IDENT )
                                            GROUP BY a.BE_IDENT, a.ERSTELLUNGS_DATUM_YMD, a.AUSGANGS_MENGE
                                            ORDER BY a.ERSTELLUNGS_DATUM_YMD DESC) c
          WHERE[B] rownum = 1[/B]) e
      WHERE d.AUSGANGS_MENGE > 0 AND d.ERSTELLUNGS_DATUM_YMD > TO_CHAR(add_months(SYSDATE, -12), 'YYYY-MM-DD')
      GROUP BY BE_IDENT
    Da wird dann bei d.BE_IDENT gemeckert, was klar ist, da er ja d zu diesem Zeitpunkt noch nicht kennt!?

    Weiß wer einen Lösungsansatz zu meinem Problem?
    Wäre super, steh grad voll auf dem Schlauch...
    Gruß
     
  2. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    Was ist denn die genaue Fehlermeldung?

    Lg
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden