我对SQL很新,并且无法生成正确的信息。我有一个包含FinishedGood部件号和ProductClassCode的数据集。我正在寻找的是所有带有多个ProductClassCode的FinishedGood零件编号,其中一个是'WU'。我可以运行查询来查找所有的ProductClassCode等于WU:
select finished_good
from FFTGGM.data_attributes_ext
where prodclass_cd = 'WU'
但我无法弄清楚如何使用该查询将其与所有FinishedGood进行比较,以生成一个FinishedGood的列表,其中ProdClasssCode为'WU'等等。我知道我可以将它用作子查询,但我不确定如何获得正确的查找顺序。有什么建议吗?
- 编辑 -
一些示例数据:
答案 0 :(得分:1)
或者你可以这样做:
where prodclass_cd in (select distinct prodclass_cd from prodclasstable)
WHERE子句中的条件可以是动态的。
答案 1 :(得分: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'
)
如果您只想要有“WU”的成品并且还有其他非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'
)