You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在PeopleSoft Query中实现IF ANY条件逻辑或SUMIF等效功能

解决PeopleSoft Query中请购单类型判定的SQL报错问题

错误原因分析

你的表达式存在两个核心语法问题:

  1. CASE语句未闭合:缺少END关键字终止条件判断,这是触发ORA-00905报错的直接原因。
  2. GROUP BY位置错误:不能嵌套在SUM()函数的括号内,必须作为整个查询的子句放在末尾。

正确的SQL逻辑写法

基础聚合表达式(计算SR行数量)

SUM(CASE WHEN REQ_LINE.LN_TYPE = 'SR' THEN 1 ELSE 0 END) AS SR_LINE_COUNT

完整查询结构(含分组与类型判定)

如果要直接输出请购单类型,可通过外层CASE判断聚合结果:

SELECT 
    REQ_HDR.BUSINESS_UNIT,
    REQ_HDR.REQ_ID,
    CASE WHEN SUM(CASE WHEN REQ_LINE.LN_TYPE = 'SR' THEN 1 ELSE 0 END) > 0 THEN 'SR' ELSE '其他类型' END AS REQUISITION_TYPE
FROM 
    REQ_HDR
JOIN 
    REQ_LINE ON REQ_HDR.BUSINESS_UNIT = REQ_LINE.BUSINESS_UNIT AND REQ_HDR.REQ_ID = REQ_LINE.REQ_ID
GROUP BY 
    REQ_HDR.BUSINESS_UNIT, REQ_HDR.REQ_ID

PeopleSoft Query中的操作步骤

  1. 添加关联表:将REQ_HDR和REQ_LINE加入查询,设置关联条件(业务单元+请购单ID)。
  2. 设置分组字段:在PeopleSoft Query的「Group By」标签下,勾选REQ_HDR.BUSINESS_UNIT和REQ_HDR.REQ_ID作为分组依据。
  3. 创建聚合计算字段:新建表达式字段,输入SUM(CASE WHEN REQ_LINE.LN_TYPE = 'SR' THEN 1 ELSE 0 END),命名为SR_LINE_COUNT。
  4. 创建类型判定字段:再新建表达式字段,输入CASE WHEN SR_LINE_COUNT > 0 THEN 'SR' ELSE '其他类型' END,命名为REQUISITION_TYPE。

通过以上步骤即可实现“只要请购单包含SR行就判定为SR类型”的业务逻辑,同时规避语法错误。

内容的提问来源于stack exchange,提问作者Aher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:59:54