公众号:SAP Technical
本文作者:matinal
 

前言部分

大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。

正文部分

接上一篇,继续

7、使用条件限制结果集。可以使用$ where()方法来设置限制查询返回的结果集的条件。 以下示例显示如何选择净额等于其订单净额的一半(或更多)的所有项目。


var qSelectedOrders =
qOrderAndItemTitles.$where(soHeader.items.NETAMOUNT.
$div(soHeader.NETAMOUNT).$gt(0.5)) ​

对诸如项目之类的字段和关联的引用可以作为实体构造函数的属性,例如soHeader.items。 如在投影(projections)的情况下,XSDS会自动为条件引用的关联生成所有必需的JOIN,即使它们不是当前投影(projections)的一部分。 要在$中创建更复杂的表达式。可参看前面介绍的API。

8、将查询条件细化为特定的匹配模式。

使用$ matching()方法,可以使用$ find()和$ findAll()方法的类JSON格式的语法来指定条件表达式。 以下代码示例显示了如何进一步优化结果集返回的选择,例如,仅接受欧元货币和数量大于2的那些数据。


qSelectedOrders = qSelectedOrders.$matching({
items: {
CURRENCY: 'EUR',
QUANTITY: {
$gt:
}
}
}); ​

9、向结果集中添加任意值。

可以使用$ addFields()方法将任意计算值添加到结果集中。 以下示例显示如何查询自交付销售项目以来通过的天数。


qSelectedOrders = qSelectedOrders.$addFields({
"DaysAgo": soHeader.items.DELIVERYDATE.$prefixOp("DAYS_BETWEEN", new
Date())
}); ​

10、使用具有计算字段的聚合。

汇总是将$ addFields()运算符与附加$ aggregate()方法组合的计算字段的特殊情况。 以下示例显示检索前100个销售订单ID的平均数量及其产品ID。


var qAverageQuantity = soItem.$query().$limit().$aggregate({
SALESORDERID: true,
PRODUCTID: true
}).$addFields({
averageQuantity: soItem.QUANTITY.$avg()
}); ​

如果需要使用更具限制性的投影,则可以在$ aggregate调用中替换为false,如以下示例所示,将删除结果集的销售订单ID。


var qAverageQuantity = soItem.$query().$limit().$aggregate({
SALESORDERID: false,
PRODUCTID: true
}).$addFields({
averageQuantity: soItem.QUANTITY.$avg()
}); ​

11、指定结果集的顺序。

要在结果集中指定顺序,可以使用$ order()方法,其中包括多个订单条件作为参数。 每个订单标准包含一个属性“by”和一个定义所需顺序的表达式。 可选地,每个标准可以包含标记$ desc以要求降序和$ nullsLast标志。 以下示例使用两个标准来首先按照标题中的净值降序排列结果集,然后按项目净值的顺序显示结果集。


qSelectedOrders = qSelectedOrders.$order({$by: soHeader.NETAMOUNT,
$desc:true},
{$by: soHeader.items.NETAMOUNT}); ​

12、从结果集中删除重复项。

$ distinct运算符从结果集中删除重复项。 以下示例显示如何显示销售订单中使用的所有货币的集合。


var qAllCurrencies = soHeader.$query().$project({CURRENCY: true}).$distinct(); ​

到此结束关于SAP HANA XS使用Data Services查询CDS实体的使用讲解。

【HANA系列】【第八篇】SAP HANA XS使用Data Services查询CDS实体【二】的更多相关文章

  1. 【HANA系列】【第七篇】SAP HANA XS使用Data Services查询CDS实体【一】

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第七篇]SAP HANA XS ...

  2. 【HANA系列】SAP HANA XS使用Data Services查询CDS实体【二】

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Dat ...

  3. 【HANA系列】SAP HANA XS使用Data Services查询CDS实体【一】

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Dat ...

  4. 【公众号系列】超详细SAP HANA JOB全解析

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]超详细SAP HANA JOB全解 ...

  5. 如何在云端部署SAP HANA实战, Azure 上的 SAP HANA(大型实例)概述和体系结构

    什么是 Azure 上的 SAP HANA(大型实例)? Azure 上的 SAP HANA(大型实例)是一种针对 Azure 的独特解决方案. 除了提供 Azure 虚拟机以用于部署和运行 SAP ...

  6. SAP HANA开发中常见问题- 基于SAP HANA平台的多团队产品研发

    大家都知道SAP HANA项目打包成Delivery Unit(缩写为DU).依照"官方"的开发模式,特别是整个团队仅仅使用一个HANA Instance进行项目开发,因为HANA ...

  7. spring boot系列(五)spring boot 配置spring data jpa (查询方法)

    接着上面spring boot系列(四)spring boot 配置spring data jpa 保存修改方法继续做查询的测试: 1 创建UserInfo实体类,代码和https://www.cnb ...

  8. Java系列--第八篇 基于Maven的SSME之定时邮件发送

    关于ssme这个我的小示例项目,想做到麻雀虽小,五脏俱全,看到很多一些web都有定时发送邮件的功能,想我ssme也加入一下这种功能,经查询相关文档,发现spring本身自带了一个调度器quartz,下 ...

  9. javascript运动系列第八篇——碰壁运动

    × 目录 [1]匀速碰壁 [2]自由落体 [3]投掷碰壁[4]拖拽碰壁 前面的话 碰撞运动可能是运动系列里面比较复杂的运动了.碰撞可以分为碰壁和互碰两种形式,而碰撞前后的运动形式也可以分为变速和匀速两 ...

随机推荐

  1. jmeter解析response里的json对象和数组

    1.解析提取json对象 2.解析提取json数组 注意,标红这里是从0开始计数 提取最后一个数组

  2. String中的intern方法

    上一篇你真的会用String吗(3)-关于字符串拼接中我们提到了String.intern()方法,本篇我们就来详细的看下这个方法是干嘛的.首先来看下jdk8中这个方法的注释: When the in ...

  3. nginx第六天

    nginx正向代理 反向代理 Nginx正向代理配置 Nginx正向代理使用场景并不多见. 需求场景1: 如果在机房中,只有一台机器可以联网,其他机器只有内网,内网的机器想用使用yum安装软件包,在能 ...

  4. R语言-程序执行时间

    我们往往对自己编写程序的运行效率十分关心,需要查看程序的执行时间. 在R中,获得时间的函数有不少,比如system.time().proc.time()等. 个人使用较多的是proc.time() & ...

  5. CF D. Number Of Permutations 排列

    挺水的一道题~ 拿全排列随便乘一下就好了. #include <cstdio> #include <algorithm> #define N 300004 #define ll ...

  6. 【杂题】【CometOJ Contest #5】E:迫真大游戏【概率】【排列组合】【多项式】

    Description 有一个n个点的环,有一个指针会从1号点开始向后扫描,每次扫描有p的概率删除当前点 询问每个点最后一个被删除的概率. 答案对998244353取模 n<=200000 So ...

  7. sql 建立索引之前计算区分度

    select cutomer_id,title,content from product_comment where audit_status=1 and product_id=1 and produ ...

  8. 兼容pc端和移动端的轮播图插件 swiper.js

    swiper.js是一款纯JavaScript打造的滑动特效插件,可以用来实现检点轮播图,tab触摸滑动切换等常用效果.下载地址:https://www.swiper.com.cn/download/ ...

  9. mysql 日期转换sql函数

    mysql提供了两个函数: from_unixtime(time_stamp)   ->  将时间戳转换为日期 unix_timestamp(date)             ->  将 ...

  10. Vue之vue中的data为什么是一个函数+vue中路径别名alias设置

    问题描述 为什么在vue组件中,我们的data属性必须是一个函数,new Vue()中的data除外,因为new Vue中只有一个data属性. 原因 因为我们能抽离出来的组件,肯定是具有复用性的,它 ...