0

私は SQL にかなり慣れていないため、正しい情報を生成するのに問題があります。FinishedGood パーツ番号と ProductClassCode などのデータ セットがあります。私が探しているのは、複数の ProductClassCode を持つすべての FinishedGood 部品番号で、そのうちの 1 つが「WU」です。クエリを実行して、すべての ProductClassCode が WU と等しいことを確認できます。

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

しかし、そのクエリを使用してすべての FinishedGood と比較し、ProdClasssCode が「WU」である 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 製品クラスもある完成品のみが必要な場合は、次のように 2 つのチェックを行うことができます。

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 に答える