指定された値のリストにある 1 つの列に値を持つ SQL テーブル内の行を除外する必要があります。単純化された表は次のようになります:
Error Codes | Other Column 1 | Other Column 2 ...
--------------------------------------------------
F010,F123,F345, | ...... | .....
F231,FC85,F904, | ...... | .....
FC432,F0425,NA, | ...... | .....
....
まず、[エラー コード] 列を分割して、3 つのエラー コードのそれぞれを取得します。これは、コンマで区切られた値の文字列です。次に、('F010'、'FC542'、'FB943') などの特定のリスト内の 3 つのエラー コードすべてを含む行を除外する必要があります。これを Teradata DB で実行しています。これはクエリの一部ですが、リスト内のすべての組み合わせを除外しているようには見えません。
SELECT ... ,
CASE
WHEN ( substr(a.error_code, 1, position(',' in a.error_code)-1) in ('F010', 'FC542', 'FB012' 'FB943', 'NA')
AND substr(a.error_code,
position(',' in a.error_code)+1,
position(',' in substr(a.error_code, position(',' in a.error_code)+1, Characters(a.error_code)-position(',' in a.error_code)))-1) in ('F010', 'FC542', 'FB012' 'FB943', 'NA')
AND substr(a.error_code,
position(',' in a.error_code) + position(',' in substr(a.error_code, position(',' in a.error_code)+1, Characters(a.error_code)-position(',' in a.error_code)))+1,
Characters(a.error_code)-(position(',' in a.error_code) + position(',' in substr(a.error_code, position(',' in a.error_code)+1, Characters(a.error_code)-position(',' in a.error_code))))-1) in ('F010', 'FC542', 'FB012' 'FB943', 'NA') )
THEN 'No'
ELSE 'Yes'
end Error_Module,
...
FROM Error_code_table a
WHERE Error_Module = 'Yes'
ちなみに、Characters() 関数は Length() と同じです。
ありがとう、マイク