CASE句内のフィールドにnew_idを割り当てる必要があります。T-SQL:CASE句内のINSERT INTO&OUTPUTの使用
INSERT INTO [table1]
(field1, field2, field3, field4, field5, field6)
SELECT @someID1, field1_from_table2, @someID2, field2_from_table2,
CASE
WHEN field3_from_table2 IS NULL
THEN INSERT INTO [table3]
OUTPUT inserted.some_new_id
DEFAULT VALUES
ELSE field3_from_table2
END
FROM [table2]
コードフラグメント
INSERT INTO [table3]
OUTPUT inserted.some_new_id
DEFAULT VALUES
CASE句の外で使用される場合、正常に動作
:ここ
は一例です。
主な問題は、field3_from_table2がtable1 IS NULLに挿入しようとしているときに、table3から取得したnew_idを割り当てる必要があるということです。
table3は単なるIDディスパッチャーです。
この問題の考え方または回避策はありますか?
ありがとうございます。
あなたは 'CASE'内のステートメントを持つことができない - それが唯一の**戻り値**(' ....ここTHEN(いくつかの値) ') –
@Chorinator、' field3_from_table2'場合は設計されていますあなたの例でtable1に 'INSERT'される行は' NULL'ですか? – gonsalu
@Gonsaluいいえ、この例ではありませんが、かなり単純な表です。それは1つの列だけを含み、それは同一性です。私はそのテーブルをIdディスパッチャとしてのみ使用します。 – Chorinator