So Wählen Sie nur einen einzigartigen Datensatz aus der Tabelle unter Verwendung von Distinct
meiner Tabelle mehrere Datensätze, die die gleiche Benutzerkennung. ich will als Ergebnis nur einen Datensatz.
select DISTINCT(MemberID) from AnnualFees;
dann Ergebnis kommen wird. aber ich möchte, um zu zeigen, die andere Spalte die Daten auch aber wenn ich das mache
select DISTINCT(MemberID),StartingDate,ExpiryDate,Amount from AnnualFees;
alle details, einschließlich der gleichen Benutzerkennung Daten auch anzeigen.
kann mir jemand helfen.
Also, wie wollen Sie wählen, WELCHE der vielen AnnualFees Zeilen für Benutzerkennung=123 angezeigt werden soll? Oder willst du einfach nur irgendwelche zufälligen Reihe?
InformationsquelleAutor Nubkadiya | 2010-06-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie wollen einfach nur eine Zeile nach dem Zufallsprinzip für jede Benutzerkennung als Sie dies tun können:
Wenn Sie möchten, dass eine bestimmte Zeile pro Benutzerkennung, z.B. die mit dem jüngsten StartDate dann könnte man es ändern:
Smith: Die analytics-Lösung (Tony ' s) wird ein single-pass-auf die Daten in der Erwägung, dass bei Ihnen fügen Sie einen self-join (kann ein kleine Aufwand wird aber trotzdem funktionieren). allgemein, Tony Lösung wird somit effizienter.
Danke, ich wunderte mich über die row_number-Berechnung. Ich vermute, dass es auf die single-pass-muss es schaffen, einen Eimer für jede Benutzerkennung, füllen Sie es mit start -, Daten-und row-ids, und dann Sortiere jedes bucket. Wenn ja, kann ich sehen, dass schneller wäre. Wenn Sie diese erraten, wie es funktioniert, ist völlig falsch, jemand lassen Sie mich wissen!
Ein Vorteil der Lösung ist, dass Oracle nicht Lesen müssen, um ALLE Zeilen der
annualfees
vor der Rückkehr Zeilen: es können Zeilen zurückgeben, wie er findet diese in Abhängigkeit von der where-Klausel in der Erwägung, dass die analytics-Lösung haben, Lesen Sie ALLE Zeilen, bevor Sie den ersten Stapel. Wenn Sie daran interessiert sind nur in den ersten paar Zeilen (und wenn der Tisch wirklich groß ist), finden Sie Ihre Abfrage schneller. (es wird wie immer ein Kompromiss)InformationsquelleAutor Tony Andrews
weiß nicht, ob dies ist ganz das, was Sie brauchen, aber Sie brauchen, zu betrachten, GRUPPE, INDEM Sie statt der klaren...
, wenn Sie mehrere Datensätze mit dem gleichen Mitglied-id, die Sie angeben müssen-genau wie zu identifizieren, die Sie wollen von den anderen
zB um jedes Mitglied das Letzte Startdatum:
aber wenn Sie benötigen, zu identifizieren, die einen Datensatz in dieser Art und Weise aber auch den anderen Spalten, ich denke, möglicherweise müssen Sie einige Tricks, wie dieser ...
zB sub-Abfrage, die obige SELECT mit einem join die anderen Spalten, die Sie wollen:
von Anfang bis Ende, auch das zeigen die Daten der Tabelle (o/p verfolgt wurde/Griff mit "SET VERIFY ON")...
InformationsquelleAutor MarkyBoyMark
Müssen Sie auswählen, welche der Zeilen mit doppelten MemberIDs zurück in gewisser Weise. Dadurch wird die Zeile mit dem größten startingDate.
InformationsquelleAutor Martin Smith
select DISTINCT Benutzerkennung,StartingDate,ExpiryDate,den Betrag von AnnualFees;
entfernen paranthesis
InformationsquelleAutor KoolKabin