简体   繁体   English

ABAP CDS 中的透视表/反透视表

[英]Pivot/Unpivot table in ABAP CDS

Is it possible to do pivot query in ABAP CDS query?是否可以在 ABAP CDS 查询中进行数据透视查询? Is there a way we can achieve this like what we are always doing in SQL server and MySQL?有没有办法像我们在 SQL Server 和 MySQL 中一直做的那样实现这一目标?

No, currently it is not supported natively neither in ABAP CDS nor in HANA.不,目前它在 ABAP CDS 和 HANA 中均不受本机支持。

There are several workarounds you can use to simulate pivot behavior:您可以使用多种解决方法来模拟枢轴行为:

  1. Pivoting with COUNT and UNION ALL [sample]使用COUNTUNION 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. Pivoting with COUNT through CASE [sample]通过CASE使用COUNT透视[示例]

     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. Pivoting with CASE and grouping [sample]使用 CASE 进行透视和分组[示例]

The given snippets are HANA examples but they can be adapted to ABAP CDS.给定的片段是 HANA 示例,但它们可以适用于 ABAP CDS。 If you give a MCVE of your case, we can propose you a possible solution.如果您提供案例的MCVE ,我们可以为您提供可能的解决方案。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM