2012-03-26 8 views
1

Ich muss meine Ergebnisse meiner Abfrage begrenzen. Ich muss basierend auf der ID nicht die Anzahl der Zeilen begrenzen.Oracle Row Limit

ex: ID EVENT EVENT_DESC 
    __ _____ __________ 
    1723 1A 1A desc 
    1723 1B 1B desc 
    2214 2A 2A desc 
    2214 2B 2B desc 

Ich brauche die Top 10 zehn IDs nicht die oberen zehn Zeilen. Ich bin mir nicht sicher, wie ich das machen soll. Kannst du mich auf ein Dokument hinweisen, das mir dabei helfen kann?

+0

definieren "top". Größte ID-Werte? Kleinste ID-Werte? Werte mit den meisten Zeilen? –

+0

Ich habe eine Tabelle die ID ist die Transaktion #. Eine Transaktion kann mehrere Ereignisse für eine Transaktion enthalten. Zum Beispiel kann die Transaktion - 1723 das Ereignis 1A, 1B, usw. haben. Die rownumb zieht die ersten 10 Datensätze. Ich möchte die ersten 10 Transaktionen durchführen. Ich musste am Ende eine Abfrage innerhalb einer Abfrage erstellen. Rufen Sie die 10 Transaktions-IDs ab und rufen Sie dann den Rest der Ereignisdaten ab, die diesen 10 Transaktionen zugeordnet waren. Ich wollte nur sehen, ob ich meine Ergebnisse basierend auf der Transaktion (ID) mit dem rownum filtern könnte. Rownum erhielt nur 10 Datensätze und nicht 10 Transaktionen. – user1046203

Antwort

4
SELECT * 
FROM (
    SELECT id, 
      event, 
      event_desc, 
      rank() over (order by id desc) as rnk 
    FROM your_table 
) 
WHERE rnk <= 10 
2

Sind Sie auf der Suche nach so etwas?

SQL Server

SELECT TOP 10 ID FROM TABLE 
GROUP BY ID 

Oracle

SELECT ID FROM (
    SELECT DISTINCT ID FROM TABLE ORDER BY ID 
) 
WHERE rownum <= 10 
+0

ja. etwas wie das – user1046203

+0

kann ich das mit Orakel tun? – user1046203

+0

Sicher. Ich habe die Antwort mit PL \ SQL aktualisiert –