2017-09-29 8 views
0

私はクローズされているコストセンターの一覧を返すSQLクエリを作成しています。これはTE_INACTIVE列の 'C'によって認識されます。SQLクエリ、特定のデータを省略する方法?

問題点:一部の原価センタが別の会社に移動されたため、3つの原価センタがクローズとオープンの両方で複製されています。このコストセンターは閉鎖され再開設されているため、新しいものには「C」がないため、もう読みたくありません。これどうやってするの?

つまり、重複する原価センタに「C」が含まれていない場合は、それをスキップします。

ここに私の元のクエリの一部と私の意味のスクリーンショットがあります。

select distinct TE_COST_CENTER, TE_INACTIVE from ABCS_TABLE_E where 
TE_COST_CENTER = '38M' 

Click this to view picture!

+0

サンプルデータと予想される結果を提供できると便利です。 –

+0

* 'あなたのテーブルの意味では、'違う会社に移ったのですか? –

+1

snarkyではありませんが、 "AND"キーワードについて聞いたことがありますか? '... and te_inactive <> 'C' ' – theGleep

答えて

1

あなたは使うべきオペレータは、 "NOT EXISTS":ここでは

select distinct TE_COST_CENTER, TE_INACTIVE from ABCS_TABLE_E t1 
where TE_INACTIVE = 'C' 
and not exists (select * from ABCS_TABLE_E t2 where t2.TE_COST_CENTER = t1.TE_COST_CENTER and t2.TE_INACTIVE <>'C') 
0

あなたが行く:

SELECT TE_COST_CENTER, TE_INACTIVE 
FROM ABCS_TABLE_E 
WHERE TE_CO NOT IN (SELECT TE_CO FROM ABCS_TABLE_E WHERE TE_INACTIVE = 'C'); 
-1

は、あなたがそれらのコストを選択するには、サブクエリを使用することができますセンターは閉鎖された 'C'。その原価センタのレコードは選択されません。

SELECT TE_COST_CENTER, 
     TE_INACTIVE 
    FROM ABCS_TABLE_E 
WHERE TE_COST_CENTER NOT IN (SELECT TE_COST_CENTER 
           FROM ABCS_TABLE_E 
           WHERE TE_INACTIVE = 'C') 
関連する問題