首页 > 其他分享 >SAP CDS view 的 having Condition 用法

SAP CDS view 的 having Condition 用法

时间:2023-08-14 13:22:48浏览次数:39  
标签:having Order 关键字 分组 CDS SAP HAVING view

Having condition 在 group by 执行完毕后才 evaludate

SAP CDS (Core Data Services) 是一个用于定义和消费数据模型的基础设施。CDS 提供了一种新的数据建模方式,它能够在数据库层定义复杂的视图,以提供更高效的数据访问。

HAVING 关键字在 SQL 中常常与 GROUP BY 关键字一起使用,用于在对查询结果进行分组后进行过滤。相对于 WHERE 关键字在分组之前对原始数据进行过滤,HAVING 关键字能够在分组后,对聚合函数(如 COUNT、SUM、AVG 等)的结果进行过滤。

在 SAP CDS view 中,HAVING 关键字的用法与 SQL 中类似。以下是一个简单的例子:

define view Sales_Summary as select from snwd_so as Order
group by Order.currency_code
{
    Order.currency_code as Currency,
    sum(Order.gross_amount) as TotalAmount
}
having sum(Order.gross_amount) > 10000

在这个例子中,我们首先从 snwd_so 表中选择数据,然后按照货币类型(currency_code)进行分组。每个货币类型对应的总销售额(TotalAmount)通过 sum 聚合函数计算得出。最后,我们使用 HAVING 关键字过滤出总销售额大于 10000 的货币类型。

需要注意的是,HAVING 关键字可以使用任何聚合函数的结果进行过滤,但不能直接使用原始数据列。例如,以下的语句是错误的:

define view Sales_Summary as select from snwd_so as Order
group by Order.currency_code
{
    Order.currency_code as Currency,
    sum(Order.gross_amount) as TotalAmount
}
having Order.gross_amount > 10000 // 错误的用法,不能直接使用原始数据列

在这个错误的例子中,我们试图在 HAVING 关键字中直接使用原始数据列 gross_amount,这是不允许的。在 HAVING 关键字中,只能使用被 GROUP BY 关键字分组的列和聚合函数的结果。

总结一下,SAP CDS view 中的 HAVING 关键字是一个强大的工具,它能够在数据分组后对聚合函数的结果进行过滤。这在处理大量数据,需要进行分组和聚合的场景中非常有用。但需要注意,HAVING 关键字不能直接使用原始数据列,只能使用被 GROUP BY 关键字分组的列和聚合函数的结果。

标签:having,Order,关键字,分组,CDS,SAP,HAVING,view
From: https://www.cnblogs.com/sap-jerry/p/17628375.html

相关文章

  • ABAP 开发者上云的时候到了 - 现在大家可以免费使用 SAP 云平台 ABAP 环境的试用版了
    之前Jerry已经写了一系列SAPCloudPlatformABAP编程环境的文章,当时使用的环境,是SAP专门为SAP社区导师们创建的。当时也有朋友留言,询问大家何时才能使用到免费的SAP云平台ABAP编程环境。SAP社区上也有世界各地的开发者问这个问题,负责这个话题的同事们的答复大意是:我们一直在努......
  • 如何通过扩展(Extension)的方式给 SAP Fiori Elements List Report 的表格新增列试读
    本教程之前的步骤,我们已经详细学习了SAPFioriElements应用里类型为ListReport的创建步骤,并且介绍了使用安装在VisualStudioCode里的SAPFioriTools扩展提供的向导,生成FioriElements应用的本地项目结构:5.动手开发第一个SAPFioriElements应用6.知其然......
  • 什么是 SAP UI5 XML 视图里的 customData
    下面是XML视图里的代码:<core:FragmentDefinitionxmlns:core="sap.ui.core"xmlns="sap.m"><Column><Texttext="{i18n|sap.suite.ui.generic.template.ListReport|STTA_C_MP_Product>xfld.Rating}"......
  • 通过一个实例的例子,学习 SAP Fiori 应用中的 Draft Handling(草稿机制)
    SAPFiori应用里的DraftHandling(草稿处理)是一种机制,用于在SAP业务数据的编辑过程中,实时保存未提交的更改。这样的机制允许用户在多个会话或者繁琐的表单填写步骤中,逐渐构建和修改数据,并在需要时将其提交。DraftHandling在SAPFiori应用中起到重要的作用,可以在不中断现有......
  • SAP Hybris Revenue Cloud 和 SAP Subscription Billing 这两个产品的关联
    SAPHybrisRevenueCloud(前称SAPHybrisBilling)和SAPSubscriptionBilling是两个紧密相关且有一定历史演变关系的产品。它们都属于SAP公司的商业套件,用于帮助企业管理订阅业务、收入管理以及订阅式收费模型。本文将详细介绍这两个产品的关联,以及它们各自的功能和特点。SAPHyb......
  • SAP CDS view 里的 Aggregation Expression
    SAPABAPCDS(CoreDataServices)视图是SAP系统中的一种建模工具,用于定义数据模型和数据库视图。CDS视图允许开发者创建高级数据模型,可以从多个数据库表中提取数据,并在SAP应用程序中使用。在CDS视图中,"AggregationExpressions"(聚合表达式)是一项强大的功能,它允许开发者对从底层数据......
  • SAP ABAP 报表进度显示控件的使用详解试读版
    有些SAPABAP报表包含了多个业务处理步骤,笔者这里举一个例子:计算某个时间段内,系统所有销售订单的总金额。SAP大多数基于ABAP技术栈的销售订单设计,都是采取订单抬头(header)和订单行项目(LineItem)的数据结构。订单的时间段维护在抬头结构上,一张订单可能包含多个行项目,每......
  • 什么是 SAP Fiori Elements 的 extensionAPI
    在SAPFioriElements中,"extensionAPI"是一种用于自定义和扩展FioriElements应用的强大工具。它提供了一组API(应用程序编程接口),允许开发人员通过代码的方式对FioriElements应用进行定制和增强。借助extensionAPI,开发人员可以在不影响标准FioriElements功能的基础上,......
  • 如何找到 SAP Fiori Elements 应用某个字段显示值具体的数据源试读版
    笔者将自己在SAP领域16年(2007~2023)的SAPUI5(Fiori)和OData开发的技术沉淀,进行了系统的归纳和总结,分别写成了三套由浅入深的学习教程,收到了不错的反响:零基础快速学习ABAP一套适合SAPUI5开发人员循序渐进的学习教程SAPOData开发实战教程-从入门到提高这三套......
  • SAP CDS view 里的 COALESCE 函数
    在SAPABAPCDS(CoreDataServices)View中,COALESCE函数是用于处理NULL值的一种功能。COALESCE函数接受多个参数,并返回第一个非NULL值参数。这意味着如果第一个参数不为NULL,则返回第一个参数的值;如果第一个参数为NULL,则返回第二个参数的值;以此类推,直到找到第一个非NU......