如何通过聚合请求使用group by列中的条件

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

解释起来有点困难,我不知道如何在具有分组依据和聚合函数的 SQL 中的列选择属性中使用条件...

会议 开始日期 日期结束 交易ID 贸易KP
1 2024-12-09 11:20:15.000 2024-12-09 11:20:16.000 tr1 ICM
1 2024-12-09 11:20:07.000 2024-12-09 11:20:48.000 tr53 信息通信技术
1 2024-12-09 11:22:07.000 2024-12-09 11:24:48.000 . ICM
2 2024-12-08 04:55:09.000 2024-12-08 04:55:11.000 jik67 SMC
2 2024-12-08 04:55:13.000 2024-12-08 04:55:38.000 . 产品生命周期管理

我想返回会话分组:

  • 最早的开始日期(使用 MIN 聚合,可以工作)
  • 最近的 EndDate (使用 MAX aggregat,可以正常工作)
  • 对应行中带有“.”的 TradeKP在 TradeID 中。 (问题是如何做到这一点?) 有关信息,一个会话可以有 1 到 600 行。 一个会话只有一行“.”在 TradeID 中 该行凡有“.”。也许在任何地方,因此与日期没有联系。该表的行数总计可达5亿行。

示例:

会议 开始 完结 交易大师
1 2024-12-09 11:20:07.000 2024-12-09 11:24:48.000 ICM
2 2024-12-08 04:55:09.000 2024-12-08 04:55:38.000 产品生命周期管理

我尝试了这个请求,但它不起作用:

SELECT session,
       MIN(DateStart) as beginning,
       MAX(DateEnd) as ending,
       MAX(tradeKP) as TradingMaster
FROM SCHEMA.TRADES
GROUP BY session
sql oracle-database aggregate-functions
1个回答
0
投票

尝试

SELECT session,
       MIN(DateStart) as beginning,
       MAX(DateEnd) as ending,
       MAX(case when tradeID='.' then tradeKP end) as TradingMaster
FROM SCHEMA.TRADES
GROUP BY session
© www.soinside.com 2019 - 2024. All rights reserved.