ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

SAP ABAP SQL COALESCE 函数是用于处理 NULL 值的一种功能

2026/8/4 11:18:15 拓冰建站 浏览量
SAP ABAP SQL COALESCE 函数是用于处理 NULL 值的一种功能

SAP ABAP SQL COALESCE 函数是用于处理 NULL 值的一种功能

SQL实例

select coalesce(success_cnt, 1) from tableA

当success_cnt 为null值的时候,将返回1,否则将返回success_cnt的真实值。

select coalesce(success_cnt,period,1) from tableA

当success_cnt不为null,那么无论period是否为null,都将返回success_cnt的真实值(因为success_cnt是第一个参数),当success_cnt为null,而period不为null的时候,返回period的真实值。只有当success_cnt和period均为null的时候,将返回1。

 

下面是CDS View的写法

COALESCE 函数还可以用于复杂的判断逻辑,返回满足条件的第一个非 NULL 值参数。例如,我们有一个 CDS View,用于显示销售订单的信息,其中包括订单号、订单日期和订单状态。我们希望在查询结果中,如果订单状态为空,则根据订单日期判断订单状态为 "已完成" 或 "未完成"。

@AbapCatalog.sqlViewName: 'ZSALESORDERS'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Sales Order Information'
define view ZSalesOrders as select from vbak
{key vbak.vbeln,vbak.erdat,vbak.status,COALESCE(vbak.status, CASE WHEN vbak.erdat <= '20230730' THEN '已完成' ELSE '未完成' END) as status_with_default
}

在上述示例中,我们使用 COALESCE 函数结合 CASE 表达式来实现复杂的判断逻辑。如果 vbak.status 字段为空,将根据订单日期 vbak.erdat 判断订单状态为 "已完成" 或 "未完成",并将结果显示在 status_with_default 字段中。