2016-03-07 33 views
5

我遇到SQL問題。我正在使用Squirrel SQL Client在Oracle 11上運行腳本。我的問題的一個簡單例子。我有以下數據:SQL - 在同一數據集中獲取現有字段的最大值作爲獨立字段

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」值是一個很長的腳本,它帶有一些定義的參數。如果我要將此腳本複製到上面的子查詢中,那麼在運行時定義參數時需要加倍。

所以我想知道,是否有可能採取表中的現有字段,並創建一個額外的字段,重複所有行的現有字段的最大值?

感謝

Ë

回答

5

使用窗函數:

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

完美,謝謝! –

相關問題