SQL - 将现有字段的最大值作为相同数据集中的独立字段获取

时间:2016-03-07 15:36:21

标签: sql oracle oracle11g

我遇到了SQL问题。我正在使用Squirrel SQL Client在Oracle 11上运行脚本。我问题的一个简单例子。我有以下数据:

ID  Date
1   2016-01-01
2   2016-01-02
3   2016-01-03
4   2016-01-04
5   2016-01-05
6   2016-01-06
7   2016-01-07
8   2016-01-08
9   2016-01-09
10  2016-01-10

我想创建一个新字段,将最大日期值作为独立字段返回:

ID  Date        Max_Date
1   2016-01-01  2016-01-10
2   2016-01-02  2016-01-10
3   2016-01-03  2016-01-10
4   2016-01-04  2016-01-10
5   2016-01-05  2016-01-10
6   2016-01-06  2016-01-10
7   2016-01-07  2016-01-10
8   2016-01-08  2016-01-10
9   2016-01-09  2016-01-10
10  2016-01-10  2016-01-10

由于我的整个脚本的复杂性,我无法使用子查询来执行此操作。一个简单的子查询解决方案可能如下所示。

SELECT a.ID, 
       a.DATE,
       b.MAX_DATE
  FROM TABLE1,(SELECT ID, 
                      max(DATE) MAX_DATE
                 FROM TABLE1
               ) b
 WHERE 1=1

但是我的“Table1”值是一个非常长的脚本,带有一些已定义的参数。如果我要将此脚本复制到上面的子查询中,我需要在运行时定义参数时加倍。

所以我想知道,是否可以在表中创建一个现有字段并创建一个额外的字段来重复所有行的现有字段的最大值?

由于

电子

1 个答案:

答案 0 :(得分:5)

使用窗口功能:

SELECT a.ID, 
       a.DATE,
       max(a.date) over () as max_date
FROM table1 a