sql >> データベース >  >> RDS >> Oracle

Last_valueウィンドウ関数が正しく機能しない

    分析関数では、ウィンドウ範囲を指定する必要があります。デフォルトでは、between unbounded preceding and current rowです。 、私は自明だと思います。

    基本的に、これは、partition by customer_id order by valid_from ascを指定した場合に発生します。 :

    1. Oracleは、現在の行のcustomer idに一致するすべての行を取得します
    2. valid_fromの昇順で並べ替えます
    3. 最小のvalid_fromで始まるウィンドウを形成します 日付で、現在の行のvalid_fromで終わります 。
    4. last_valueを評価します 、現在の行のvalid_fromを返します 。

    あなたがする必要があるのは、進行中の範囲を指定することです:

    16:53:00 [email protected]> ed
    Wrote file S:\spool\sandbox\BUFFER_SYSTEM_38.sql
    
      1  select last_value(VALID_FROM) OVER (
      2    partition by customer_id
      3    ORDER BY VALID_FROM asc
      4    range between current row and unbounded following
      5  ) rn
      6* from   t
    16:53:21 [email protected]> /
    
    RN
    ---------------------------------------------------------------------------
    04-DEC-13 11.07.01.000000 AM
    04-DEC-13 11.07.01.000000 AM
    04-DEC-13 11.07.01.000000 AM
    
    Elapsed: 00:00:00.01
    


    1. MySQLまたはMariaDBGaleraクラスターでレプリケーションパフォーマンスを向上させる方法

    2. このprepareステートメントをWordpress$wpdbのプレースホルダーを使用するように変換するにはどうすればよいですか?

    3. 指定された名前と引数のタイプに一致する演算子はありません。明示的な型キャストを追加する必要があるかもしれません。 --Netbeans、Postgresql 8.4、Glassfish

    4. Mysqlは4つのテーブルを結合し、NULL値を表示します