我有两个表,VariablesProcesses
我想实现INSERT INTO SELECT CASE,但是我以前从未做过。

数据总是从VariablesProcesses
但是我不知道什么列。

例如 :

Variables表具有以下列:

Variable_ID
Set_To_Value_ID
Set_To_Variable_ID
Changed_In_SP
Comment_Input

第一列始终复制到Processes表。 Set_To_Value_IDSet_To_Variable_IDChanged_In_SPComment_Input需要一个SELECT CASE,因为只有一个可以具有值。一行中的三列始终为null。任何不为null的列都应插入Processes表中:

Processes表:

Process_ID
Variable_ID
Value_ID-(Set_To_Value_ID转到此处)
Manual_Value-(Set_To_Variable_IDChanged_In_SPComment_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

08-27 07:46