Spalten zusammenfassen

TheZero0ne

Neuer Benutzer
Beiträge
4
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
 
Werbung:
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
 
Danke für die schnelle Antwort, aber leider kommt dort bei mir eine Fehlermeldung "kein GROUP BY-Ausdruck" ...

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
 
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.
 
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.
 
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.

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