Veröffentlicht 4. Juli 200817 j Hallo Zusammen, Ich möchte aus einer Tabelle eine Liste erstellen, wo ich bei doppelten Einträgen jeweils nur einen Eintrag (z.B. den Ersten) angezeigt bekomme. Es ist eine Oracle-DB Mit folgender SQL-Anweisung: SELECT DISTINCT ID AS "ID", DATUM AS "Datum", NUMMER AS "Nummer", bAS "b" FROM Tabelle GFP WHERE b IS NOT NULL AND b <> '-' AND b <> '0' AND b = '011365005037415' --AND b NOT IN (SELECT MIN( FROM Tabelle GROUP BY ID, DATUM, NUMMER, b --HAVING GFP.ID> MAX(ID) ORDER BY b Erhalte ich folgendes Resultat: ID; Datum; Nummer; b 103016; 31.01.2008; 0791112233; 011365005037415 103016; 29.02.2008; 0791234567; 011365005037415 Ich möchte aber nur einen Eintrag anzeigen, welchen ist mir eigentlich egal. Habt ihr eine Idee?? Herzlichen Dank
4. Juli 200817 j Die Eintrage haben ein unterschiedliches Datum und eine doppelte Nummer, "doppelt" sind sie somit nicht wirklich DISTINCT braucht man nicht bei der Verwendung von GROUP BY GROUP BY verwendet man meist in Zusammenhang mit Aggregatfunktionen, warum verwendest du es hier? Eine mögliche Lösung wäre im SELECT ein "min(datum)" zu verweden und "datum" aus dem "GROUP BY" zu entfernen (damit hättest du auch eine Aggregatfunktion verwendet und das GROUP BY macht Sinn)
4. Juli 200817 j Danke für die Antwort. Ok, ein Min(Datum) macht zwar bei diesen zwei Einträgen Sinn, aber wenn ich im Statement das AND b = '011365005037415' entferne, was ich muss (verwendete es hier nur als beispiel) funktionierte das mit dem Min(Datum) nicht mehr!? Oder sehe ich das Falsch?? Habe mit dem Statement herum getestet, aber beide Varianten (nur DISTINCT oder nur GROUP BY) haben gleiches Resultat geliefert. MERCI
4. Juli 200817 j doch, für Nummer gilt das gleiche wie für Datum, auch min() im SELECT und aus dem GROUP BY entfernen, hab ich beim letzetn Posting übersehen
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.