2016-05-16 3 views
-1

Wie Abfrage für nachfolgende Tabelle zu schreiben, die unter Ergebnis geben, bedeutet, wenn eine Person Rekord für Jahr hat 93 es nur zeigen, aber wenn hat Rekordjahr nicht geben 92Abfrage für diese Tabelle

Tabelle: enter image description here

Ergebnis: enter image description here

+2

was ist dein Problem? Und was hast du bisher versucht? – Blank

+0

Wie schreibe ich eine Abfrage, die dieses Ergebnis gibt? – SajjadZare

+2

Bitte erläutern Sie Ihre Frage. Derzeit ist unklar, was Ihr Problem ist. – manniL

Antwort

1

Sie ROW_NUMBER() mit CASE EXPRESSION verwenden können:

SELECT t.code,t.name,t.year 
FROM (SELECT s.*,ROW_NUMBER() OVER (PARTITION BY s.name 
            ORDER BY CASE WHEN s.year = 92 then 1 
                WHEN s.year = 93 then 2 
                ELSE 3 
              END) as rnk 
     FROM YourTable s) t 
WHERE t.rnk = 1 

Ich nahm auch die Fälle, wenn es mehr Jahre gibt als 92,93 (priorisierte zuletzt) ​​