2016-03-07 13 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"値は、いくつかの定義済みのパラメータを持つ非常に長いスクリプトです。上のサブクエリにこのスクリプトをコピーする場合は、実行時にパラメータを定義する際に2倍にする必要があります。

だから私は、テーブル内の既存のフィールドを取って、すべての行の既存のフィールドの最大値を繰り返す追加のフィールドを作成することは可能ですか?

おかげ

E

答えて

5

ウィンドウ関数を使用します

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

パーフェクトは、あなたに感謝を! –

関連する問題