ABAP CDS COUNT DISTINCT в поле отметки времени

У меня проблема при использовании COUNT с DISTINCT в поле TIMESTAMP. Ниже мой вид CDS, пожалуйста, помогите. Я хочу поместить COUNT в поле ConfirmedDate.

 @AbapCatalog.sqlViewName: 'ZXEWMIWT'
 @AbapCatalog.compiler.compareFilter: true
 @AbapCatalog.preserveKey: true
 @AccessControl.authorizationCheck: #CHECK
 @EndUserText.label: 'Interface View for Warehouse Task detail'
 @OData.publish: true
// I* type:ddls

define view ZXEWMI_WT as select from /scwm/ordim_c as ORDIM_C {
    key ORDIM_C.lgnum as WarehouseNo,
    @UI.selectionField: [{ position: 1 }]
    @UI.lineItem: [{ position : 1 }]
    ORDIM_C.processor as Processor,
    @UI.lineItem: [{ position : 2 }]
    //count(distinct ORDIM_C.confirmed_at) as sum_wt

    **tstmp_to_dats( ORDIM_C.confirmed_at,
    abap_system_timezone( $session.client,'NULL' ),
    $session.client,
    'NULL' ) as ConfirmedDate**

}where processor <> '' 
group by lgnum, processor, confirmed_at;

person Abhishek    schedule 18.06.2020    source источник
comment
I have an Issue а в чем ваша проблема?   -  person Suncatcher    schedule 18.06.2020
comment
В поле ConfirmedDate мне нужно поставить счетчик с отдельным, и он не принимает это выражение ... этот компакт-диск должен отображать количество выборов в день пользователем ...   -  person Abhishek    schedule 18.06.2020
comment
Здесь вам не нужно DISTINCT, у меня нет EWM, но я предполагаю, что confirmed_at - это поле отметки времени, поэтому не будет двух задач в одной и той же секунде / миллисекунде. Пожалуйста, укажите строки вашей таблицы и ожидаемый результат, а также /scwm/ordim_c определение таблицы   -  person Suncatcher    schedule 18.06.2020
comment
›Поэтому не будет двух задач в одну и ту же секунду / миллисекунду. Почему вы так думаете? Если нет первичного ключа или уникального ограничения, это определенно возможно.   -  person konstantin    schedule 22.06.2020


Ответы (1)


Похоже, у вас есть отметки времени с точностью до миллисекунды в поле ORDIM_C.confirmed_at, но вы хотите сгруппировать результаты по дням.

К сожалению, GROUP BY позволяет группировать только по столбцам из входных таблиц / представлений. Его нельзя использовать для вычисляемых столбцов.

Но что вы можете сделать, это сначала создать отдельное представление CDS, которое дает вам поля таблицы / scwm / ordim_c с меткой времени, преобразованной в дату, а затем запрашивать это представление.

Мнение 1:

define view Z_ORDIM_C_WITH_DAY as 
select from /scwm/ordim_c as ORDIM_C {
    key ORDIM_C.lgnum as WarehouseNo,
    ORDIM_C.processor as Processor,
    tstmp_to_dats( ORDIM_C.confirmed_at,
    abap_system_timezone( $session.client,'NULL' ),
    $session.client,
    'NULL' ) as ConfirmedDate    
}

Мнение 2:

define view ZXEWMI_WT as 
select from Z_ORDIM_C_WITH_DAY {
    key WarehouseNo,
    @UI.selectionField: [{ position: 1 }]
    @UI.lineItem: [{ position : 1 }]
    Processor,
    @UI.lineItem: [{ position : 2 }]
    count( * ) as sum_wt
    ConfirmedDate    
}
where processor <> ''
group by WarehouseNo, Processor, ConfirmedDate;
person Philipp    schedule 22.06.2020