2013-09-16 63 views
0

我對SQL很陌生,無法生成正確的信息。我有一個包含FinishedGood部件號和ProductClassCode的數據集。我所需要的是所有FinishedGood零件編號都有多個ProductClassCode,其中一個是'WU'。我可以運行一個查詢,找到所有ProductClassCode的等於吳:如何在SQL查詢中使用子查詢?

select finished_good 
from FFTGGM.data_attributes_ext 
where prodclass_cd = 'WU' 

,但我有麻煩找出如何使用查詢來比較它所有FinishedGood的產生FinishedGood的名單與「一ProdClasssCode吳'和其他東西。我知道我可以用它作爲子查詢,但我不確定如何獲得查找的正確順序。有什麼建議?

CNC中

一些樣本數據:

sample data

+0

請發佈樣本數據和基於這些數據的預期結果 –

+0

FFTGGM.data_attributes_ext的主鍵是什麼? – dcaswell

+0

我已經添加了一些樣本/結果數據。我不知道主鍵是什麼? – rphello101

回答

0

你可以使用IN子句或EXISTS子句:

select * 
from FFTGGM.data_attributes_ext 
where finished_good in 
(
    select distinct finished_good 
    from FFTGGM.data_attributes_ext 
    where prodclass_cd = 'WU' 
) 

select * 
from FFTGGM.data_attributes_ext A 
where 
EXISTS (
    select finished_good 
    from FFTGGM.data_attributes_ext B 
    where A.finished_good=B.finished_good 
    and prodclass_cd = 'WU' 
) 

如果你只是想成品具有「吳」,也有另一種非吳產品 - 類,你可以做兩個檢查,像這樣:

select * 
from FFTGGM.data_attributes_ext A 
where 
EXISTS (
    select finished_good 
    from FFTGGM.data_attributes_ext B 
    where A.finished_good=B.finished_good 
    and prodclass_cd = 'WU' 
) 
and 
EXISTS (
    select finished_good 
    from FFTGGM.data_attributes_ext B 
    where A.finished_good=B.finished_good 
    and prodclass_cd <> 'WU' 
) 
+0

真棒回答,謝謝。我能夠稍微修改第三個版本並使其正常工作。 – rphello101

1

或者你可以這樣做:那麼

where prodclass_cd in (select distinct prodclass_cd from prodclasstable) 

您在WHERE子句中的標準可以是動態的。