我有两个表,Variables
和Processes
。
我想实现INSERT INTO SELECT CASE
,但是我以前从未做过。
数据总是从Variables
到Processes
。
但是我不知道什么列。
例如 :Variables
表具有以下列:Variable_ID
Set_To_Value_ID
Set_To_Variable_ID
Changed_In_SP
Comment_Input
第一列始终复制到Processes
表。 Set_To_Value_ID
,Set_To_Variable_ID
,Changed_In_SP
,Comment_Input
需要一个SELECT CASE
,因为只有一个可以具有值。一行中的三列始终为null。任何不为null的列都应插入Processes
表中:Processes
表:Process_ID
Variable_ID
Value_ID
-(Set_To_Value_ID
转到此处)Manual_Value
-(Set_To_Variable_ID
,Changed_In_SP
或Comment_Input
转到此处)Variable_ID_To_Change
转到Variable_ID
。
如何进行?
谢谢。
最佳答案
Value_ID-(Set_To_Value_ID转到此处)Manual_Value
Set_To_Variable_ID,Changed_In_SP或Comment_Input在此处)
您可以这样使用COALESCE
表达式:
INSERT INTO Processes
SELECT
Set_To_Value_ID,
COALESCE(Set_To_Variable_ID, Changed_In_SP, Comment_Input)
FROM Variables
更新:嗯,由于您不能为此使用
COALESCE
,因此以下是使用CASE
表达式的规范方法:INSERT INTO Processes
SELECT
Set_To_Value_ID,
CASE
WHEN Set_To_Variable_ID IS NOT NULL THEN Set_To_Variable_ID
WHEN Changed_In_SP IS NOT NULL THEN Changed_In_SP
WHEN Comment_Input IS NOT NULL THEN Comment_Input
END
FROM Variables