使用 SAP CDS 视图根据 FlightDate 查找最繁忙的 CarrierId

问题描述 投票:0回答:1

输入数据 CarrierID 连接 ID 航班日期 价格
UA 1750 2024年2月10日 250 UA 1890 07.04.2024 450 UA 2760 07.04.2024 150 UA 1970 07.04.2024 100 AA 3490 2024 年 4 月 11 日 340 AA 1960 13.04.2024 560 SQ 3490 2014 年 5 月 15 日 120

输出数据 运营商 ID 航班日期 UA 07.04.2024 AA 11.04.2024 AA 13.04.2024 SQ 15.05.2014

数据格式图像 在此输入图片描述

需要得到以上结果作为输出。让我解释一下,由于 07.04 CarrierId 具有最高行程,因此它应该是输出而不是 10.02。所有其他条目都有基于日期的单个条目,因此它将出现在输出中。

我尝试创建两个 CDS 视图来解决该问题,但我可以获得最繁忙的 CarrierId,但输出中没有日期。但要求是显示带有CarrierID的日期。

我试图通过下面的视图找到输出

将视图实体 View1 定义为从 /dmo/booking 中选择
{ 密钥载体_id作为CarrierId, Flight_date 作为 FlightDate,
count(*) 作为 FlightCount

} 通过...分组 承运商 ID、航班日期

定义视图实体View2为从View1中选择 { key CarrierId 作为 CarrierId, 航班日期作为航班日期, max(FlightCount) as Numberofflight }按运营商 ID 分组

此视图不起作用,因为我们需要在 Group By 子句中添加非聚合字段,但如果我在 GroupBy 中添加 FlightDate,则输出将会不同。

abap hana opensql cds
1个回答
0
投票

编写一些伪代码,只是为了提供一个想法,而不是语法正确

使用以下选择创建 CDS 视图(例如 cds_1)

SELECT carrid, fldate, COUNT( * ) AS total_count
  FROM sflight
  GROUP BY carrid, fldate

然后在您所在的位置创建另一个 CDS(例如 cds_2)

SELECT carrid, fldate, MAX(total_count)
  FROM cds_1
  GROUP BY carrid, fldate.
© www.soinside.com 2019 - 2024. All rights reserved.