her*_*ann 4 sql sql-server select insert select-case
我有两张桌子,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需要 aSELECT CASE因为只有一个可以具有值。其中连续三列将始终为空。任何不为空的列都应该插入到Processes表中:
Processes桌子 :
Process_ID
Variable_ID
Value_ID- (Set_To_Value_ID此处 )
Manual_Value- ( Set_To_Variable_ID, Changed_In_SP OR 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
Run Code Online (Sandbox Code Playgroud)
更新:嗯,因为您不能使用 来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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20676 次 |
| 最近记录: |