2017-01-02 1 views
-5

ich für die Auswahl nur eine disctint Spalte über einen Satz von Spaltendeutliche Wählen Sie nur auf eine Spalte mit Oracle

ist verrückt bin immer Lassen Sie sagen, ich habe diese Anfrage: SELECT A, B, C, D FROM TABLE WHERE A = 1

Und dies ist der Ausgang

A B C D 
1 2 8 5 
1 2 2 5 
1 2 3 5 

Aber ich würde so etwas wie dies mag:

A B C D 
1 2 8 5 

Wie kann ich das erreichen?

Danke an alle!

+0

Woher wissen Sie, dass Sie 8 in der 3. Spalte haben möchten? Möchten Sie wirklich den höchsten Wert (d. H. Aggregieren und gruppieren nach) oder eine andere Regel? Und was, wenn die 2. oder 4. Spalte auch andere Werte haben, für ein anderes A? –

+1

Warum denken Sie, "8" ist "distinct" Wert für die Spalte "C"? –

+0

Wenn Sie mehrere Zeilen mit 'A = 1' haben, welche sollte ausgewählt werden? Oder geht es Ihnen gut, wenn Sie nur "einen von ihnen auswählen, egal welchen"? – mathguy

Antwort

0

Ein Ansatz ist es, die Ergebnisse von Spalte C abnehmend bestellen und dann nehmen Sie nur die erste Zeile:

SELECT * FROM (
    SELECT A, B, C, D 
    FROM TABLE_NAME 
    WHERE A = 1 
    ORDER BY C DESC 
) 
WHERE ROWNUM = 1; 

+1

Das ist immer noch raten, oder? Die Anforderung besagt nicht "anders als" A = 1 "und" C "maximiert, die Wahl von" B "und" D "kann zufällig sein." – mathguy

0

Select A, B, max (C) C, D Von table_name Gruppe von A, B, D

0

Wenn Sie eine Ergebnisse mit der höchsten Zahl in C wollen, versuchen Sie unten Abfrage SELECT A, B, C, D FROM Tabelle WHERE A = 1 UND C IN (SELECT MAX (C) FROM Tabelle) ;

Verwandte Themen