2017-01-25 3 views

答えて

2

どのように?

SELECT Employee, MAX(Resignation) Resignation 
    FROM table 
WHERE Resignation IS NOT NULL 
GROUP BY Employee 

それとも、あなたのテーブルはあなたが示されてきたよりも多くの列、

SELECT a.* 
    FROM table a 
    JOIN (
       SELECT Employee, MAX(Resignation) Resignation 
       FROM table 
       WHERE Resignation IS NOT NULL 
       GROUP BY Employee 
     ) b ON a.Employee = b.Employee AND a.Resigation = b.Resignation 

を持っている場合、これは、「極端な値と詳細行を探し、」クエリパターンです。質問の再解釈を更新

0

私はあなたが意味を考える:

戻り、現在辞任されているすべての従業員のための最も最近の辞任日付。現在辞任されているのは、「その従業員のために退任日が設定されたすべての従業員レコードを持つ」と定義されています。退職日がNULLの単一の従業員レコードは、その従業員がまだ雇用されていることを意味します。彼らが辞任した回数にかかわらず!

これはexistscorrelated subqueryを使用して実行できます。 およびmaxと一緒にgroup by

まず、辞任されていないすべての従業員のリストを取得します。 次に、私たちはフルセットを、辞任されていない従業員のセットと比較し、従業員が辞任されていない従業員のリストにいないままにしておき、次に従業員によってグループ化して最大退職を得る。 CooelationがA.EMPLOYEEとしてラインWHERE A.Employee = B.Employeeで発生

SELECT Employee, Max(Resignation) Resignation 
FROM Table A 
WHERE NOT EXISTS (SELECT 1 
        FROM Table B 
        WHERE A.Employee = B.Employee 
        and B.Resignation is null) --Cooelation occurs here Notice how A 
GROUP BY Employee 

1レベルは、table BからTABLE Aを除去テーブルを参照します。

また、適用結合でもこれを行う方法があることを確かめてください。しかし私はその構文にまだ慣れていません。

関連する問題