0

我对 SQL 很陌生,无法生成正确的信息。我有一个包含 FinishedGood 零件编号和 ProductClassCode 的数据集。我正在寻找的是具有多个 ProductClassCode 的所有 FinishedGood 零件编号,其中之一是“WU”。我可以运行查询来查找所有等于 WU 的 ProductClassCode:

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

但是我无法弄清楚如何使用该查询将其与所有 FinishedGood 进行比较,以生成带有“WU”的 ProdClasssCode 和其他内容的 FinishedGood 列表。我知道我可以将它用作子查询,但我不确定如何获得正确的查找顺序。有什么建议吗?

-编辑-

一些样本数据:

样本数据

4

2 回答 2

1

或者你可以这样做:

where prodclass_cd in (select distinct prodclass_cd from prodclasstable)

WHERE 子句中的条件可以是动态的。

于 2013-09-16T18:18:56.197 回答
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'
)
于 2013-09-16T19:31:20.520 回答