SAP CDS view 里 UNION 操作的用法

简介: SAP CDS view 里 UNION 操作的用法

下图是 SAP CDS view Union 操作的语法和例子:

5302c0a00a834219d1e6a83628d099f0.png

SAP CDS(Core Data Services)视图是 SAP HANA 数据库在 ABAP 层面上的抽象和逻辑视图。它不仅提供了一种 SQL 类型的语言(Data Control Language,DCL)来查询和操作数据,还提供了各种特性和功能以支持应用程序开发。

在 SAP CDS 中,Union 操作是一种合并或连接两个或多个 CDS 视图的方式。这样做的目的是将多个数据源的数据整合在一起,使得可以在单一查询中使用它们。Union 操作的基本语法如下:

SELECT FROM view1
UNION
SELECT FROM view2


在这个例子中,view1 和 view2 是 CDS 视图的名称。Union 操作将它们的结果集合并在一起。需要注意的是,Union 操作要求两个 CDS 视图必须有相同的列结构,包括列的数量、列的类型和列的顺序。


举个例子,让我们假设我们有两个 CDS 视图:一个是 SalesOrder,另一个是 PurchaseOrder。SalesOrder 视图包含了所有的销售订单,而 PurchaseOrder 视图包含了所有的采购订单。现在,我们想要查询所有的订单,无论是销售订单还是采购订单。我们可以使用 Union 操作来做到这一点:

@AbapCatalog.sqlViewName: 'ZALLORDERS'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'All Orders'
define view ZAllOrders as (
  select from ZSalesOrder
  union all
  select from ZPurchaseOrder
)

在这个例子中,ZAllOrders 是新定义的 CDS 视图,它包含了所有的销售订单和采购订单。union all 操作是 Union 操作的一个变种,它保留了所有的结果,包括重复的结果。如果我们只使用 union,那么任何重复的结果都会被消除。

一般来说,Union 操作在以下几种场景中可能会被使用到:

  1. 合并多个查询的结果:如果我们有多个查询,每个查询返回的结果集的结构相同,但是查询的条件或者查询的表不同,那么我们可以使用 Union 操作来合并这些查询的结果。例如,我们可以使用 Union 操作来合并查询两个不同部门的员工信息的结果。


  1. 去除重复的记录:在 SQL 中,Union 操作默认会去除结果集中的重复记录。因此,如果我们想要去除查询结果中的重复记录,可以使用 Union 操作。


  1. 从多个表中查询数据:如果我们需要从多个表中查询数据,并将结果合并在一起,那么可以使用 Union 操作。例如,我们可以使用 Union 操作来查询多个产品分类下的产品信息。

下面,我们来看一个使用 Union 操作的例子。假设我们有两个表,一个是销售表 Sales,一个是采购表 Purchase。我们想要查询出所有销售和采购的信息,并将结果合并在一起。那么,我们可以定义一个 CDS View,使用 Union 操作来合并查询 Sales 和 Purchase 的结果:

@AbapCatalog.sqlViewName: 'ZCDS_SALES_PURCHASE'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Sales and Purchase View'
define view ZCdsSalesPurchase as select from sflight as sales
  union 
  select from scarr as purchase {
    key sales.carrid as Id,
    key sales.connid as ConnectionId,
    sales.fldate as FlightDate,
    sales.price as Price,
    'Sales' as Type
  } 
  union 
  select from scarr as purchase {
    purchase.carrid as Id,
    purchase.currcode as CurrencyCode,
    purchase.url as Url,
    purchase.mimetype as MimeType,
    'Purchase' as Type
  }

在这个例子中,我们首先查询了 Sales 表,然后使用 Union 操作合并了查询 Purchase 表的结果。在每个查询中,我们都选取了一些字段,并给这些字段定义了别名,以确保两个查询结果的结构是相同的。在最后,我们添加了一个 Type 字段,用于标识记录是来自 Sales 表还是 Purchase 表。


注意,在使用 Union 操作时,需要确保所有的查询结果的结构必须是相同的,也就是说,每个查询选择的字段的数量、顺序和类型都必须相同。此外,Union 操作默认会去除结果集中的重复记录。如果不想去除重复记录,可以使用 Union All 操作。


最后,我想强调一点,Union 操作并不会改变原有的 CDS 视图。它只是创建了一个新的视图,这个视图的数据是原有视图的数据的合集。

相关文章
|
1月前
|
SQL Android开发
创建 SAP ABAP CDS View 保存失败 - Dependencies DDL source - View Entity not written
创建 SAP ABAP CDS View 保存失败 - Dependencies DDL source - View Entity not written
创建 SAP ABAP CDS View 保存失败 - Dependencies DDL source - View Entity not written
|
1月前
|
搜索推荐 BI 开发者
sap.ui.comp.smarttable.SmartTable 组件 beforeRebindTable 事件的用法
sap.ui.comp.smarttable.SmartTable 组件 beforeRebindTable 事件的用法
|
1月前
|
监控 测试技术
SAP 电商云修改 Product Catalog Staged 版本数据后,同步到 online 版本的 UI 操作
SAP 电商云修改 Product Catalog Staged 版本数据后,同步到 online 版本的 UI 操作
|
1月前
|
Web App开发 开发者 存储
介绍一个 webp 格式转 png 格式的软件:XNConvert
介绍一个 webp 格式转 png 格式的软件:XNConvert
介绍一个 webp 格式转 png 格式的软件:XNConvert
|
1月前
|
存储 前端开发 应用服务中间件
使用 SAP ABAP 执行 FTP 操作
使用 SAP ABAP 执行 FTP 操作
|
1月前
|
数据库 存储 BI
SAP ABAP CDS View 源代码存储的数据库表揭秘和其他相关数据库表介绍试读版
SAP ABAP CDS View 源代码存储的数据库表揭秘和其他相关数据库表介绍试读版
SAP ABAP CDS View 源代码存储的数据库表揭秘和其他相关数据库表介绍试读版
|
1月前
|
数据库
SAP S/4HANA 系统的底层基石 - 通过实际的例子,介绍 CDS View 入门级的概念试读版
SAP S/4HANA 系统的底层基石 - 通过实际的例子,介绍 CDS View 入门级的概念试读版
SAP S/4HANA 系统的底层基石 - 通过实际的例子,介绍 CDS View 入门级的概念试读版
|
1月前
|
数据库
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
|
1月前
|
数据库 SQL 应用服务中间件
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
|
7月前
|
API
SAP OData V2 和 V4 里针对日期类型的字段进行过滤操作(filter)的正确语法试读版
SAP OData V2 和 V4 里针对日期类型的字段进行过滤操作(filter)的正确语法试读版