sql - 将值从 case 表达式插入到表中
问题描述
此案例表达式确定当前的批准者值。每次执行此案例表达式时,我想将当前的批准者值插入列(都是同一张表)中。CURRENT_APPROVER
您是否通过使用 Insert into 来完成此操作?我在语法上有问题。
SELECT
CASE
WHEN FORM_TYPE IN ('Form_Type1', 'Form_Type2', 'Form_Type3')
AND SIGNATURE_FIELD1 IS NULL
AND STATUS = 'Pending Approval'
THEN 'Signature 1 Needed'
WHEN FORM_TYPE IN ('Form_Type1', 'Form_Type2', 'Form_Type3')
AND SIGNATURE_FIELD2 IS NULL
AND STATUS = 'Pending Approval'
THEN SIGNATURE_FIELD1_ASSIGNMENT
WHEN FORM_TYPE IN ('Form_Type1', 'Form_Type2', 'Form_Type3')
AND SIGNATURE_FIELD3 IS NULL
AND STATUS = 'Pending Approval'
THEN SIGNATURE_FIELD2_ASSIGNMENT
WHEN FORM_TYPE IN ('Form_Type1', 'Form_Type2', 'Form_Type3')
AND SIGNATURE_FIELD4 IS NULL
AND SIGNATURE_FIELD2 IS NOT NULL
AND SIGNATURE_FIELD3 IS NOT NULL
AND SIGNATURE_FIELD1 IS NOT NULL
AND STATUS = 'Pending Approval'
THEN 'Signature 4 Needed'
ELSE 'Unavailable'
END AS CURRENT_APPROVER
FROM
FINANCE_TABLE;
解决方案
这会将CURRENT_APPROVER
SELECT CASE 中的值为 null 的值(如果该列的所有行都为 null,则可以删除最后一个 WHERE 条件)。要使用正确的值更新正确的行,您需要通过表的主键将内部SELECT
查询连接到查询。UPDATE
我用作id
示例,但您需要将其替换为真正的主键
UPDATE FINANCE_TABLE f
SET CURRENT_APPROVER = (SELECT
CASE
WHEN FORM_TYPE IN ('Form_Type1','Form_Type2','Form_Type3') AND SIGNATURE_FIELD1 IS NULL AND STATUS = 'Pending Approval' THEN 'Signature 1 Needed'
WHEN FORM_TYPE IN ('Form_Type1','Form_Type2','Form_Type3') AND SIGNATURE_FIELD2 IS NULL AND STATUS = 'Pending Approval' THEN SIGNATURE_FIELD1_ASSIGNMENT
WHEN FORM_TYPE IN ('Form_Type1','Form_Type2','Form_Type3') AND SIGNATURE_FIELD3 IS NULL AND STATUS = 'Pending Approval' THEN SIGNATURE_FIELD2_ASSIGNMENT
WHEN FORM_TYPE IN ('Form_Type1','Form_Type2','Form_Type3') AND SIGNATURE_FIELD4 IS NULL AND SIGNATURE_FIELD2 IS NOT NULL AND SIGNATURE_FIELD3 IS NOT NULL AND SIGNATURE_FIELD1 IS NOT NULL AND STATUS = 'Pending Approval' THEN 'Signature 4 Needed'
ELSE 'Unavailable'
END AS CURRENT_APPROVER
FROM FINANCE_TABLE f2
WHERE f.id = f2.id) -- This needs to be updated
WHERE f.CURRENT_APPROVER IS NULL;
我在这里使用这个答案作为我的答案的模板
推荐阅读
- php - 按查询分组不能正常工作根据我
- javascript - React Material UI 插入和删除行
- javascript - 当 onChange() 中有函数调用时,React 的下拉菜单中未更新选定的下拉值
- amazon-web-services - AWS Recognition 中的 search、searchByImage 和 compare 有什么区别?
- haproxy - 有时服务器连接通过负载平衡失败
- python - FastText most_similar 不返回完全匹配
- amazon-cloudwatch - AWS cloudwatch 嵌入式指标中的重复元素
- python-3.x - 命令行打印应每 10 分钟保存在 .txt 文件中,并带有多个跟踪
- ios - X 轴的 Google Live 图形值按降序排列
- google-drive-api - 按内容大小驱动 API 过滤文件列表