我有两张表,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
。
如何进行?
谢谢。
答案 0 :(得分:4)
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