私は以下の質問を単純化するために探しています。私は代替ソリューションの周りを頭で覆うことはできませんが、COALESCEクエリの簡略化
目的は、Col_CからCol_Dを取り出すことです。 Col_DがNULLを返す場合、Col_BからCol_Dを取得したいとします。 それがNULLを返す場合は、もう一度ラダーを上げ、Col_AからCol_Dを取得します。ただし、Col_BとCol_CがNULLの場合のみです。
テーブル
Table_A
Col_A Col_B Col_C Col_X
L000 3200 3220 0000
Table_B
Col_A Col_B Col_C Col_D
L000 NULL NULL 3256
L000 3200 NULL 6483
L7213
L000 3200 3220 NULL
L000 3200 3230 9462
クエリ
Col_D
6483
編集
DECLARE @X nvarchar(4) = '0000'
DECLARE @A nvarchar(4), @B nvarchar(4), @C nvarchar(4)
SELECT @A = Col_A, @B = Col_B, @C = Col_C FROM [Table_A]
WHERE [Col_X] = @X
SELECT COALESCE(
(SELECT [Col_D] FROM [Table_B] WHERE Col_C = @C AND Col_B = @B AND Col_A = @A),
(SELECT [Col_D] FROM [Table_B] WHERE Col_C IS NULL AND Col_B = @B AND Col_A = @A),
(SELECT [Col_D] FROM [Table_B] WHERE Col_C IS NULL AND Col_B IS NULL AND Col_A = @A)
) AS Col_D
予想される出力:追加Table_Aと予想される出力
あなたが "Col_CからCol_Dを取得する" とはどういう意味ですか?これらはすべてTable_Bの右側の列ですか? – n8wrl
期待する出力を含めることはできますか? –
Table_B.Col_C = Table_A.Col_CのCol_D値を取得します。 @ n8wrlこれは役に立ちますか? –