zoukankan      html  css  js  c++  java
  • 【HANA系列】【第八篇】SAP HANA XS使用Data Services查询CDS实体【二】

    公众号:matinal
    本文作者: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: 2
     }
     }
    });
    
    ​

    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(100).$aggregate({
     SALESORDERID: true,
     PRODUCTID: true
    }).$addFields({
     averageQuantity: soItem.QUANTITY.$avg()
    });
    
    ​

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

    ​
    var qAverageQuantity = soItem.$query().$limit(100).$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实体的使用讲解。

  • 相关阅读:
    ok
    Android设备激活量超10亿 3个月增长1亿台
    JavaWeb--文件的上传和下载
    JavaWeb--Listener
    JavaWeb--JSTL
    JavaWeb--自定义标签4--EL自定义函数
    JavaWeb--自定义标签4--带父标签的自定义标签
    codeforces 437B. The Child and Set 解题报告
    codeforces 437A. The Child and Homework 解题报告
    codeforces 435 B. Pasha Maximizes 解题报告
  • 原文地址:https://www.cnblogs.com/SAPmatinal/p/11184366.html
Copyright © 2011-2022 走看看