如何用 pl/sql 中的最大和最小日期替换多行数据的开始日期和结束日期

How to replace start date and end date for multiple row data with the maximum and minimum of date in pl/sql

我有一个具有唯一开始日期和结束日期组合的多行数据。

我想用所有开始日期中的最小日期替换开始日期 和结束日期为所有结束日期中的最大值。

示例:

id         start Date    end Date


1005    09/01/2000  05/31/2001

1005    09/05/2000  05/23/2001

100775  03/15/2005  04/30/2005

100775  03/25/2005  04/22/2005

3273    09/01/2003  12/31/2004

3273    09/11/2003  12/11/2004

现在我希望输出如下所示:

id         start Date    end date


1005    09/01/2000  05/31/2001

1005    09/01/2000  05/31/2001

100775  03/15/2005  04/30/2005

100775  03/15/2005  04/30/2005

3273    09/01/2003  12/31/2004

3273    09/01/2003  12/31/2004

我已经尝试使用 maxmin 函数来执行此操作,但这不起作用,因为我希望这只是在 oracle 报表生成器中使用它的一个查询。

您只需使用 minmax 函数即可获得所需的输出:

select
        id,
        min(start_date) OVER (PARTITION BY id)  start_date,
        max(end_date) OVER (PARTITION BY id)  end_date 
FROM table1;

SQL Fiddle Demo

另一种方法,

UPDATE T1 SET StartDate = MinStartDate, EndDate = MaxEndDate
FROM  (
    Select id, min(StartDate) as 'MinStartDate',
    Max(EndDate) as 'MaxEndDate'
    from T1 
    Group by id
    ) AS T2
WHERE  T1.id = T2.id;