Announcement

Collapse
No announcement yet.

Doppelte Datensätze in Tabelle

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Doppelte Datensätze in Tabelle

    Hallo, ich habe eine Tabelle mit 10 Spalten. In dieser Tabelle befinden sich 95000 Datensätze. Viele der Werte in eine Bestimmten Spalte sind doppelt sodass ich wenn ich ein DISTINCT auf die Spalte mache 6351 Datensätze erhalte.
    Nun möchte ich eine Sicht auf diese Tabelle erstellen in der die doppelten Datensätze nur einmal vorkommen. Aber ich möchte auch die restlichen Spalten zu den Datensätzen in der Sicht haben. Wie kann ich das machen???

    Danke im Voraus!

  • #2
    Hallo,

    ...dann hast Du ein logisches Problem! Wenn Du mit einem DISTINCT und der Einbeziehung aller benötigten Spalten zu viele Datensätze erhältst, welche sind dann die Überzähligen? Analysiere an besten zuerst welche Felder wirklich die sind, die in ihrer Gesamtheit nur einmalig existieren sollen. Diese nimmst Du in eine Gruppierungsfunktion mit auf (GROUP BY Spalte1, Spalte2,...). Die Spalten, die Du zwar im SELECT sehen möchtest, die aber nicht die Eindeutigkeit bestimmen, müssen über Aggregatfunktionen (z.B. min(), max()) beschrieben werden. Hier musst Du Dich dann irgendwie entscheiden!
    Wenn es etwas konkreter werden soll, dann poste doch bitte beispielhaft ein paar Ausgangsdaten, und zeige das gewünschte Ergebnis, dann werden wir eine Lösung finden!

    Gruß
    Olaf

    Comment


    • #3
      Komplett identisch werden diese Datensätze doch hoffentlich nicht sein?!
      Gehen wir mal davon aus, jeder Datensatz hat eine eindeutige ID, dann könnte eine Idee sein, immer den mit der kleinsten ID je Gruppe zu nehmen. Dann würde das so aussehen:
      ;with tmp(id, wert) as (select min(id), wert from tabelle group by wert)
      select * from tabelle where id in (select id from tmp) order by wert

      ... ist im Prinzip nur ein Beispiel für den Ansatz, wie es Olaf schon beschrieben hat.

      bye,
      Helmut

      Comment

      Working...
      X