2017-07-15 1 views

Répondre

2

Vous venez de sélectionner les enregistrements qui ont le empcode dans une table de empcodes qui ont seulement un événement.

SELECT 
    empcode, 
    leavecode 
FROM mytable 
WHERE empcode in (
    SELECT empcode FROM mytable GROUP BY empcode HAVING count(1)=1 
) 
+0

Merci beaucoup. Cela m'aide beaucoup. –

3

Si vous voulez empcode s sans doublons, puis d'une façon simple utilise l'agrégation:

select empcode, min(leavecode) as leavecode 
from t 
group by empcode 
having count(*) = 1; 

Cela fonctionne, parce que s'il n'y a qu'une seule ligne pour un empcode, puis min(leavecode) est leleavecode.

Une autre méthode utilise des fonctions de fenêtre:

select empcode, leavecode 
from (select t.*, count(*) over (partition by empcode) as cnt 
     from t 
    ) t 
where cnt = 1; 

Ou, si leavecode s sont uniques quand il y a des doublons, peut-être la façon la plus efficace:

select t.* 
from t 
where not exists (select 1 
        from t t2 
        where t2.emp_code = t.empcode and t2.leavecode <> t.leavecode 
       ); 
+0

Merci beaucoup. Ça aide beaucoup. –