oracle - Oracle函数在单行中选择多行不起作用
问题描述
我正在使用应用程序引擎将文件加载到暂存记录中。当 BU、Deptid 等中有空白时...我必须捕获所有列都是空白的并使用这些值更新错误文本字段。
UPDATE SYSADM.PS_VI_EMP_TS SET ERR_TEXT = SELECT ERROR FROM (SELECT * FROM (SELECT CASE WHEN BUSINESS_UNIT = ' ' THEN 'BUSINESS_UNIT IS NULL' ELSE ' ' END AS ERROR FROM SYSADM.PS_VI_EMP_TS WHERE USERID='JCOOPER' AND ACTION = 'E' AND PROCESS_INSTANCE = '7852429' UNION SELECT CASE WHEN DEPTID = ' ' THEN 'DEPTID IS NULL' ELSE ' ' END AS ERROR from SYSADM.PS_VI_EMP_TS WHERE USERID='JCOOPER' AND ACTION = 'E' AND PROCESS_INSTANCE = '9852429' UNION SELECT CASE WHEN PROJECT_ID =' ' THEN 'PROJECT_ID IS NULL' ELSE ' ' END AS ERROR FROM SYSADM.PS_VI_EMP_TS WHERE USERID='JCOOPER' AND ACTION = 'E' AND PROCESS_INSTANCE = '9852429' )) WHERE ERROR <> ' ' WHERE USERID ='JCOOPER' 和行动 = 'E' AND PROCESS_INSTANCE = '9852429'
上面的脚本结果如下。
错误
BUSINESS_UNIT 为 NULL DEPTID 为 NULL
我想要的结果如下。
错误
BUSINESS_UNIT 为 NULL,DEPTID 为 NULL
我正在使用 ListAgg 函数,但遇到如下错误。任何帮助都会很棒。
SELECT LISTAGG(BUSINESS_UNIT, ';') WITHIN GROUP(ORDER BY USERID)
FROM SYSADM.PS_VI_EMP_TS WHERE USERID='JCOOPER'
GROUP BY BUSINESS_UNIT
面对错误:
ORA-00923: FROM keyword not found where expected
00923. 00000 - "FROM keyword not found where expected"
*Cause:
*Action:
Error at Line: 47 Column: 43
解决方案
你把事情复杂化了。你根本不需要两个工会listagg
。的简单使用连接case... when
,在这里写你的选择:
select case business_unit when ' ' then 'BUSINESS_UNIT IS NULL; ' end ||
case deptid when ' ' then 'DEPTID IS NULL; ' end ||
case project_id when ' ' then 'PROJECT_ID IS NULL; ' end as error
from ps_vi_emp_ts
where userid = 'JCOOPER' and action = 'E' and process_instance = '9852429'
如果您的表有主键,则使用它进行更新。否则,您可以merge
与 rowid 一起使用。或者如果它对你有用,就按照你的方式去做,特别是如果只有一行符合标准。
推荐阅读
- jquery - jQuery onclick 显示/隐藏多个 div - 隐藏额外的 div
- plot - 通过研究在漏斗图中着色点
- javascript - 有没有办法让我的前缀不区分大小写(Discord.js)
- php - 无法从数据透视表中播种
- angular - 垫表子模块未过滤从父模块传递的字符串
- codeigniter - 您没有选择要上传的文件在 codeigniter 中出错
- reactjs - React - 使用外部配置填充 UserManagerSettings
- javascript - 如何使用 Sequalize 保存 n:m 关联?
- lxml - openpyxl 无法处理写入 lxml.etree._ElementUnicodeResult
- python - 如何在 Tensorflow 2.0 中做 Cohen Kappa 二次损失?