我需要一个来自组(它是id)的min(date1)max(date2)以及与max(date2)相关的其他字段
以下是来源日期的样子
id ------ date1 ------ date2 ------其他数据
-------------------------------------------------- -------
1 ------ 02/12/2018 ------- 01/12/2018 ------ abc
1 ------ 08/21/2018 ------ 06/12/2019 ------ def
2 ------ 12/01/2018 ------ 03/03/2016 ------ ghi
2 ------ 12/03/2018 ------ 06/30/2020 ------ xyz
2 ------ 01/02/2018 ------ 05/10/2019 ------ klm
我无法使用分组依据,因为我不想在其他字段上进行分组。
我的预期输出是
id ---- min(date1)----- max(date2)--other-data(与max(date2)关联
-------------------------------------------------- -
1 ------ 02/12/2018 ------- 06/12/2019 ------ def
2 ------ 01/02/2018 ------ 06/30/2020 ----- xyz
答案 0 :(得分:0)
是的,您可以使用分组依据,您只需要对其余的其他数据使用适当的聚合函数,并使用KEEP聚合子句指示要保留的分组中的哪条记录。以下是SQL Fiddle的演示:
查询1 :
select id
, min(date1)
, max(date2)
, max(other_data) keep (dense_rank last order by date2) od
from table1
group by id
Results :
| ID | MIN(DATE1) | MAX(DATE2) | OD |
|----|-----------------------|-----------------------|-----|
| 1 | 2018-02-12 00:00:00.0 | 2019-06-12 00:00:00.0 | def |
| 2 | 2018-01-02 00:00:00.0 | 2020-06-30 00:00:00.0 | xyz |