A1、A2、a3、a4、b1、b2、b3、b4の8ビット列があります。8 つすべてが完全に独立しており、これらに基づいて別のフィールドに入力する必要があります。
この他のフィールドを、8 つの列のどれが 1 に設定されているかに応じて、テキスト A、B、または AB で更新したいと考えています。
いくつかの例を次に示します。- 8 つのフィールドすべてが 1 に設定されている
場合は AB が入力されます - A3 と B1 が 1 に設定されている場合は AB が入力されます
- A1 と A3 が 1 に設定されている
場合は A が入力されます - B4 と B2 が 1 に設定されている場合は次に、B を入力します。
したがって、A1 から B4 までの任意の組み合わせに対して、フィールドを設定する必要があります
以下は私が試したものですが、不完全ですが、アイデアが得られます。
アップデート
エイドリアンからの正解
UPDATE m
SET ref = ASet + BSet
FROM contactMaster m
inner join contact c on
m.contactid = c.contactid
CROSS APPLY (
SELECT CASE WHEN (c.A1 | c.A2 | c.A3 | c.A4) = 1 THEN 'C' ELSE '' END AS ASet
,CASE WHEN (c.B1 | c.B2 | c.B3 | c.B4) = 1 THEN 'D' ELSE '' END AS BSet
) AS CA1
where ref is null