2016-07-14 4 views
0

treten habe ich eine Situation wie diese ich eine Tabelle sagt A.Oracle-Abfrage für bestimmte Spalte erhalten, wenn Benutzer mehr Eingänge

ID sid RE 
    -- --- -- 
    1 123 BE 
    2 123 BE 
    2 234 FR 
    3 123 BE 
    3 156 LU 
    3 184 FR 

, wenn der Benutzer sid = 123 and RE = 'BE' als Eingabe gibt brauche ich nur id als 1 zu geben. wenn der Benutzer sid = 123 and RE = 'BE' and sid 234 und RE FR gibt brauche ich nur 2.

i ein Orakel Abfrage erstellt haben, geben wie diese

select min(id)as id, sid, re 
    from  a 
    where sid = 123 and re = 'be' 
    group by sid, re 
    ; 

Für nur ein SID = 123 und R E = BE als Eingabe funktioniert es gut. Aber dann, wenn Benutzer 123 BE, 234 FR übergibt, wie dies an die obige Abfrage übergeben und nur 2 als Ausgabe erhalten?

Ich möchte diese Abfrage JPQL konvertieren und die Liste der sid passieren und re.That ist meine Absicht,

+2

Mögliches Duplikat von [Einen bestimmten Wert in Oracle erhalten] (http://StackOverflow.com/questions/38341822/getting-a-particular-value-in-oracle) – mathguy

+0

DUPLICATE der gleichen OP Frage von gestern: http : //stackoverflow.com/questions/38341822/getting-a-particular-value-in-oracle Ich markierte es als solches. Ich habe das OP gebeten, seine Frage zu klären (es ist nicht klar, wie ein Benutzer eine SID und zwei SID- und RE-Paare eingibt). Stattdessen hat er die Frage erneut gestellt. – mathguy

+0

Als Gordon nicht antwortet, wissen Sie, dass etwas nicht stimmt. Ich prophezeie entweder eine doppelte Marke oder vielleicht einen Downvote, der mir in den Weg kommt. –

Antwort

0
SELECT MAX(t.ID) 
FROM 
(
    SELECT ID, sid, RE 
    FROM a 
    WHERE (sid = 123 AND RE = 'BE') OR (sid = 234 AND RE = 'FR') 
) t 

Hinweis: Ich glaube, Sie zu OR bestimmt zusammen Ihre Kriterien in der WHERE Klausel, da ein Datensatz kann nicht gleichzeitig zwei verschiedene sid Werte haben.

+0

Ihre Fähigkeiten zu verstehen, was die OP wollte, sind deutlich viel besser als meins. ;-) – mathguy

+0

@mathguy Der Java-Teil seiner Frage ist nicht-trivial, aber dann wieder wahrscheinlich zu breit für eine Antwort, weil es eine Menge Code erfordern würde, wenn das OP keine gegeben hat. –

Verwandte Themen