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

Spalten zusammenfassen

Dieses Thema im Forum "Oracle" wurde erstellt von TheZero0ne, 27 August 2013.

  1. TheZero0ne

    TheZero0ne Neuer Benutzer

    Moin moin,
    ich habe jetzt schon eine Weile im Internet gesucht und bin leider nicht fündig geworden :(
    Mein Problem ist, dass ich eine Abfrage (aus einer Abfrage) machen möchte.
    Die Abfrage/Tabelle sieht bislang in etwa so aus:

    User__|_AdminKz_| Datum
    User1 | X |01.04.2013
    User1 | X |10.07.2012
    User1 | X |01.01.2008
    User2 | X |01.04.2013
    User2 | X |07.06.2001
    usw... | usw... |usw...

    Abfrage bislang ist:

    SELECT DISTINCT usertable.user, usertable.oakz, usertable.admin_kz, table2.datum
    FROM usertable
    JOIN table3 ON usertable.user = UPPER(table3.freigabe)
    JOIN table2 ON table2.mbeln = table3.belnr
    WHERE table2.bedat > to_date('27.08.2012','DD.MM.YYYY')
    AND UPPER(table3.freigabe) = usertable.user
    ORDER BY user ASC, datum DESC

    Das ganze ist eine Oracle-Datenbank.

    Was ich möchte ist, dass die User zusammengefasst werden und nur das oberste (aktuellste) Datum stehen bleibt.

    Hat da jemand eine Idee? :(

    MfG
    TheZero0ne aka. Tim
     
  2. akretschmer

    akretschmer Datenbank-Guru


    SELECT user, max(datum) FROM table GROUP BY user


    Andreas
     
  3. TheZero0ne

    TheZero0ne Neuer Benutzer

    Danke für die schnelle Antwort, aber leider kommt dort bei mir eine Fehlermeldung "kein GROUP BY-Ausdruck" ...
     
  4. TheZero0ne

    TheZero0ne Neuer Benutzer

    SELECT usertable.user, usertable.oakz, usertable.admin_kz, MAX(table2.datum)
    FROM usertable
    JOIN table3 ON usertable.user = UPPER(table3.freigabe)
    JOIN table2 ON table2.mbeln = table3.belnr
    WHERE table2.bedat > to_date('27.08.2012','DD.MM.YYYY')
    AND UPPER(table3.freigabe) = usertable.user
    GROUP BY user, oakz, admin_kz
    ORDER BY user ASC, datum DESC

    Ich habe das jetzt so umgebaut und bekomme den Oracle-Fehler:
    [Error Code: 979, SQL State: 42000] ORA-00979: kein GROUP BY-Ausdruck
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# create table the_zero_one (usr text, datum date);
    CREATE TABLE
    Time: 309,700 ms
    test=*# copy the_zero_one from stdin;
    Enter data to be copied followed by a newline.
    End with a backslash and a period on a line by itself.
    >> user1        2013-04-01
    >> user1        2012-07-10
    >> user1        2008-01-01
    >> user2        2014-04-01
    >> user2        2001-06-07
    >> \.
    Time: 67005,099 ms
    test=*# select usr, max(datum) from the_zero_one group by usr;
      usr  |    max
    -------+------------
     user2 | 2014-04-01
     user1 | 2013-04-01
    (2 rows)
    
    Time: 4,214 ms
    test=*# rollback;
    ROLLBACK
    Time: 0,499 ms
    
     
  6. ukulele

    ukulele Datenbank-Guru

    Ich kann da auch nicht ganz das Problem erkennen höchstens das du im GROUP BY keine Tabellennamen davor stehen hast, im SELECT aber schon.
     
  7. TheZero0ne

    TheZero0ne Neuer Benutzer

    Mein Problem ist, dass der Oracle Server oder was auch immer es nicht zulässt, dass ich nur nach User gruppiere. Es geht nur, wenn ich auch nach Datum gruppiere.
    Es ist also nett, dass Du Dir da solche Mühe gegeben hast akretschmer, aber so wie bei Dir funktioniert es bei mir leider nicht.
     
  8. akretschmer

    akretschmer Datenbank-Guru

    "user" ist auch bei Oraggle ein reserved word, guggst Du http://docs.oracle.com/cd/B19306_01/server.102/b14200/ap_keywd.htm
    Vielleicht liegt es schlicht daran.
     
  9. ukulele

    ukulele Datenbank-Guru

    Das ließe sich leicht klären, einfach user als [user] schreiben. Mein MS SQL Studio macht mir das auch schön rosa :)
     
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