Yの値に更新する必要があるテーブルがありますが、この更新は他のテーブルからのいくつかの結果に基づいており、これを行う方法がわかりません。
基本的に、以下のチェックを完了する必要があります
- テーブルから、他のテーブルに正確に19の一致する行があることを更新する必要があることを確認する必要があります
- 一致する行で、フィールドの1つがnullではない
- 他に2つのテーブルがあり、後者のテーブルにレコードが存在することを確認し、後者の一致するレコードのフィールドの1つに「Y」の値が含まれていないことを確認する必要があります。
これに対する私のアプローチはUNIONを使用することですが、このアプローチが正しいかどうか、またはそれを行うためのはるかに優れた方法があるかどうかを誰かにアドバイスしてもらいたいです。
SELECT '1'
FROM t_A_Outbound
Where NOT HEADER IN (Select HEADER FROM t_B_Outbound)
UNION
SELECT '1'
FROM t_A_Outbound
Where HEADER IN (Select HEADER FROM t_B_Outbound
WHERE NOT INCOMPLETE ='Y')
UNION
Select '1'
From t_C_Outbound
Where ValueString = ''
UNION
Select '1'
From t_C_Outbound
WHERE Exists(Select Count(key), HEADER
From t_C_Outbound IN (SELECT HEADER FROM table_that_needs_updating)
Group By HEADER
Having NOT Count(Cast(key as Int)) = 19)
変更する必要があるテーブルのフィールドを更新するためにこの値が戻ってきたかどうかを示すフラグとして1を使用することを考えました。
誰かアドバイスしてもらえますか?