2017-12-05 12 views
0

すべての従業員と場所を確認したかったのですが、 1つの場所に複数の従業員がいる。だから私の条件は、すべての従業員のステータスが非アクティブなすべての場所が欲しいということです。例えば、emp表のように従業員のすべてのレコードを確認するSQLクエリ

あなたはすべてのステータスが非アクティブである場所をしたい場合は

EmpId loc status 
123 ABC active 
124 ABC active 
125 ABC inactive 
234 PQR inactive 

結果が

Empid loc status 
234 PQR inactive 

答えて

1

であるべきですが、私はgroup byをお勧めします:

select loc 
from t 
group by loc 
having min(status) = max(status) and min(status) = 'inactive'; 
+0

ありがとうゴードン、私はそれを試みます。しかし、私は複数の状態を持っている場合は、ここで句が動作しますか?私が非アクティブを知り、従業員を抱きたいのであれば? – user3528745

+0

@ user3528745 。 。あなたが尋ねた質問に答えることは可能です。別の質問がある場合は、*別の質問としてそれを聞いてください。 –

0

これはどうですか?

SELECT DISTINCT loc, status 
    FROM my_table 
WHERE loc NOT IN (SELECT DISTINCT loc WHERE status = 'active); 

これは、アクティブではないすべての場所を表示します。

+0

無関係ですが、サブセレクトの「distinct」は役に立たないです –

+0

@ a_horse_with_no_name-なぜですか? status = 'active'の重複したlocが存在する可能性があります。 DISTINCTはINを検索するための明確なリストを与えます。 – Ramesh

+0

私はそれがすべての従業員をチェックするとは思わない。それは、ステータスが非アクティブな場所を提供しますが、場所は多くの従業員に関連付けることができます。私は少なくとも1つのempがアクティブなloactionを望んでいません。 – user3528745

関連する問題