Расчетный год в группе по

Я работаю над представлением ABAP CDS и где-то застрял, на самом деле у меня есть поле даты и суммы, и я должен показать сумму суммы за год, но когда я запускаю запрос ниже, он не группировался по году и показывал год многократно

@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 ответа

Ваш исходный запрос покажет выходные строки, которые вы будете считать дубликатами. Это потому, что ваше предложение GROUP BY основано на dfaell, который также включает данные о дате, месяце и году. Таким образом, ваш запрос будет показывать увеличенные суммы за каждый день, определенный с помощью dfaell. Вам нужно изменить dfaell с помощью LEFT(dfaell,4)

В SQL вы можете управлять своими требованиями следующим образом

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

Конечно, вы можете одновременно пропустить swhrkond как из списка выбора, так и из списка по группам, но, поскольку это поле ссылки из bkond, хорошо также сохранить его в выходном результате.

Но то, что я испытал с представлением CDS, это то, что он не позволяет функцию LEFT() в предложении GROUP BY

Так что я могу предложить вам решение

Создайте два представления 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

Вы группируете по дням, вместо этого вы должны группировать по годам. Подобно:

@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
Другие вопросы по тегам