在 SAP ABAP CDS (Core Data Services) View 中,
首先,我们需要了解 COALESCE( value1, value2, ..., valueN ) 其中,value1、value2 等为参数,可以是字段名、常量值或表达式。CDS View 将按照参数的顺序检查它们的值,返回第一个非 NULL 值参数。如果所有参数均为 NULL,则返回 NULL。 下面我们通过几个实际示例来详细说明 示例 1:使用 COALESCE 设置默认值 假设我们有一个 CDS View,用于展示员工的信息,其中包括员工姓名和薪水。有时候,薪水字段可能为空,我们希望在查询结果中将其显示为默认值,比如 0。 @AbapCatalog.sqlViewName: 'ZEMPLOYEES'@AbapCatalog.compiler.compareFilter: true@AccessControl.authorizationCheck: #CHECK@EndUserText.label: 'Employee Information'define view ZEmployees as select from spfli{ key spfli.carrid, spfli.connid, spfli.cityfrom, spfli.cityto, spfli.countryfr, spfli.countryto, spfli.flighttype, spfli.distance, COALESCE(spfli.distance, 0) as distance_with_default} 在上述示例中,我们使用 示例 2:使用 COALESCE 替换 NULL 值 在某些情况下,我们希望将 NULL 值替换为其他特定的值。例如,我们有一个 CDS View,用于显示订单信息,其中包括订单号和订单创建日期。如果订单创建日期为空,我们希望在查询结果中将其替换为 "N/A"。 @AbapCatalog.sqlViewName: 'ZORDERS'@AbapCatalog.compiler.compareFilter: true@AccessControl.authorizationCheck: #CHECK@EndUserText.label: 'Order Information'define view ZOrders as select from vbak{ key vbak.vbeln, vbak.erdat, COALESCE(vbak.erdat, 'N/A') as erdat_replaced} 在上述示例中,我们使用 示例 3:使用 COALESCE 进行复杂判断
@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} 在上述示例中,我们使用 总结在 SAP ABAP CDS View 中, |
|