sql - 插入选择案例

标签 sql sql-server select insert select-case

我有两张 table ,VariablesProcesses .
我想实现一个 INSERT INTO SELECT CASE ,但我以前从未这样做过。

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

例如 :
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_IDVariable_ID Value_ID - ( Set_To_Value_ID 到这里 )
Manual_Value - ( Set_To_Variable_ID , Changed_In_SPComment_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/

相关文章:

sql - 需要显示一个虚拟月份 - Oracle SQL

php - 无法添加或更新子行: a foreign key constraint fails

sql-server - 翻译 SQL 以用于 Oracle

mysql - 使用联合中第二个选择的第一个选择的值?

MYSQL:根据日期计算不同值的出现次数

mysql - 同时获取每列中每个值的计数

php - 在 sql 查询中使用 SESSION 变量时尝试获取非对象的属性

java - 以最安全的方式使用准备好的语句

sql-server - 如何使用带有 SQL-Server 负载的显式连接表添加 Entity Framework Core n-m 自引用实体?

sql-server - 将两个表与其列进行比较