Сводная / несводная таблица в ABAP CDS

Можно ли выполнить сводный запрос в запросе ABAP CDS? Есть ли способ добиться этого, как мы всегда делаем в SQL-сервере и MySQL?


person user3312649    schedule 15.08.2019    source источник
comment
О каких версиях ABAP и SAP идет речь? По крайней мере, для ABAP 7.5x в SAP R / 3 ответ отрицательный. Вероятно, вам нужно определить CDS в соответствии с сводной таблицей и перезаписать / переопределить все методы предоставления данных, из-за которых вы потеряете большую часть функций, которые CDS предоставляет из коробки.   -  person konstantin    schedule 19.08.2019


Ответы (1)


Нет, в настоящее время он изначально не поддерживается ни в ABAP CDS, ни в HANA.

Есть несколько обходных путей, которые можно использовать для имитации поведения поворота:

  1. Вращение с помощью COUNT и UNION ALL [образец]

    select vendor_id, sum("E1") AS "E1", SUM("E2") AS "E2", SUM("E3") AS "E3"
    FROM
    (
    select vendor_id, COUNT(NUM) as "E1", 0 AS "E2" , 0 AS "E3"
    from "ABHISHEAGRAW".
    WHERE EMP_ID = 'E1' GROUP BY vendor_id
    union all
    select vendor_id, 0 AS “E1”, COUNT(NUM) as "E2", 0 AS "E3"
    from "ABHISHEAGRAW".
    WHERE EMP_ID = 'E2' GROUP BY vendor_id
    union all
    select vendor_id, 0 AS “E1”, 0 as "E2", COUNT(NUM) AS "E3"
    from "ABHISHEAGRAW".
    WHERE EMP_ID = 'E3' GROUP BY vendor_id
    ) GROUP BY vendor_id ORDER BY vendor_id
    
  2. Вращение с COUNT по CASE [образец]

    select vendor_id, sum("E1") AS "E1", SUM("E2") AS "E2", SUM("E3") AS "E3"
    FROM
    (
    select vendor_id, CASE (EMP_ID) WHEN 'E1'
    THEN 1
    ELSE 0
    END as "E1",
    CASE (EMP_ID) WHEN 'E2'
    THEN 1
    ELSE 0
    END as "E2",
    CASE (EMP_ID) WHEN 'E3'
    THEN 1
    ELSE 0
    END as "E3"
    from “ABHISHEAGRAW”.
    )GROUP BY vendor_id ORDER BY vendor_id
    
  3. Поворот с помощью CASE и группировка [образец] < / а>

Приведенные фрагменты являются примерами HANA, но их можно адаптировать к ABAP CDS. Если вы предоставите MCVE своего дела, мы можем предложить вам возможное решение.

person Suncatcher    schedule 27.10.2019