2017-07-15 7 views
-2

Ich bin neu auf SQL und ich bin mit der Abfrage unterAbfrage nicht Zurückgeben erwartetes Ergebnis

var Pprofile = "SELECT A.POLICY_PROFILE as POLICY_PROFILE,A.STATUS_CODE1,A.EFF_DT, A.END_EFF_DT,E.OTHER_STRING10,E.DISPLAY_EMPLOYEE FROM EMPLOYEE E , ASGNMT A " + 
    "WHERE E.DISPLAY_EMPLOYEE = A.LD1 AND " + 
"POLICY_PROFILE = 'LOCAL_51' AND A.STATUS_CODE1 = 'A' " + 
    " ORDER BY E.DISPLAY_EMPLOYEE, A.EFF_DT ASC"; 

Das Problem ist, dass all die verschiedenen „Gültigkeitsdaten Aufzeichnungen“ für alle Mitarbeiter, wie gezeigt zurückkehrt in das Bild. Ich möchte nur den letzten effektiven Datensatz erstellen, der für jeden anderen Benutzer erstellt wurde. query result

Bitte ich brauche Hilfe mit meiner Frage, die wahrscheinlich viel besser geschrieben werden kann, aber am Ende möchte ich nur die letzte effektive Datum Aufzeichnung, nicht alle von ihnen erhalten.

Vielen Dank!

+1

Siehe https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me- Squeeze-to-a-simple-sql-Abfrage - und wir müssen dieses Java-Zeug oder was auch immer diese Verkettung ist nicht sehen. – Strawberry

Antwort

0

So etwas wie dieses

drop table if exists t; 
create table t(id int, eff_dt date); 
insert into t values 
(1,'2017-01-01'),(1,'2017-01-01'),(1,'2017-02-01'), 
(2,'2017-01-01'); 

select t.* 
from t 
where t.eff_dt = (select max(t1.eff_dt) from t t1 where t1.id = t.id); 
Verwandte Themen