按组计算的年份

时间:2018-02-01 12:40:33

标签: hana-sql-script hana-studio cds

我正在研究ABAP CDS视图并且卡在某个地方,实际上我有日期和金额字段,我必须显示年金额的总和,但是当我在查询下运行时它没有按年份分组并显示多年时间< / p>

@AbapCatalog.sqlViewName: 'ZTEST'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Sales Cash Flow Report'
@VDM.viewType: #CONSUMPTION
@Analytics.dataCategory: #CUBE

define view ZRESV07 as select from vicdcfpay as PAY
{
left(PAY.dfaell,4) as Year
sum(PAY.bkond) as Amount
}
group by PAY.dfaell

2 个答案:

答案 0 :(得分:0)

您按天分组,您应按年份分组。喜欢:

@AbapCatalog.sqlViewName: 'ZTEST'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Sales Cash Flow Report'
@VDM.viewType: #CONSUMPTION
@Analytics.dataCategory: #CUBE

define view ZRESV07 as select from vicdcfpay as PAY
{
left(PAY.dfaell,4) as dfaell
sum(PAY.bkond) as Amount
}
group by dfaell

答案 1 :(得分:0)

您的原始查询将显示您认为重复的输出行。 这是因为您的GROUP BY子句基于dfaell,其中还包括日期,月份和年份数据。 因此,您的查询将显示使用dfaell标识的每一天的累计金额。 您需要使用LEFT(dfaell,4)

修改dfaell

在SQL中,您可以按如下方式管理您的需求

 select 
    LEFT(dfaell,4) as Year,
    SUM(bkond) as Amount,
    swhrkond
from vicdcfpay
group by
    LEFT(dfaell,4),
    swhrkond

当然你可以同时从选择列表和分组依据列表中省略swhrkond,但由于它是bkond的参考字段,所以最好将它保存在输出结果中。

但我对CDS视图的体验是,它不允许在GROUP BY子句中使用LEFT()函数

所以我可以建议你作为解决方案

创建两个CDS视图

在第一个中,您可以使用以下SQL查询

  select 
      LEFT(dfaell,4) as YearErdat,
      bkond,
      swhrkond
  from vicdcfpay as PAY

在第二个查询中,引用此CDS并使用GROUP BY子句

select 
    YearErdat,
    sum(bkond) as Amount,
    swhrkond
from ZCDSVIEW1
group by YearErdat, swhrkond