我有两张 table ,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
table 。 Set_To_Value_ID
, Set_To_Variable_ID
, Changed_In_SP
, Comment_Input
需要 SELECT CASE
因为只有一个人可以有一个值。一行中的三列将始终为空。任何不为空的列都应插入 Processes
table :Processes
table :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 goes here ) Manual_Value
Set_To_Variable_ID, Changed_In_SP OR Comment_Input goes here )
您可以使用
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
关于sql - 插入选择案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13452139/