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

テーブル内の欠落した日付の直前の日付から欠落した日付と価格を自動的に生成するSQL

    your_tableをouterjoinの1つのテーブルとして使用しました 、使用されているlast_value 以前のデータを挿入するには、これを見てください:)

    SELECT last_value(m.data ignore nulls) over (order by n.mydate) data,
         n.mydate
    FROM
         (SELECT DATA, mydate FROM your_table
         ) m,
         (SELECT TRUNC(SYSDATE, 'MM')-1+LEVEL mydate FROM dual CONNECT BY LEVEL <= 30
         )n
    WHERE m.mydate(+) = n.mydate
    ORDER BY n.mydate;
    

    ここをいじる

    lag()を使用できます 機能もありますが、日付のギャップが複数ある場合はデータを入力しません。直前のデータのみを入力します。

    nvl(m.data, lag(m.data)over(order by n.mydate))
    

    -編集 -

    データの場合:

    SELECT n.mydate VALUE_DATE,
         last_value(m.STK_EXCH IGNORE NULLS) OVER (ORDER BY n.mydate) STK_EXCH,
         last_value(m.SECURITY IGNORE NULLS) OVER (ORDER BY n.mydate) SECURITY,
         last_value(m.mkt_price IGNORE NULLS) OVER (ORDER BY n.mydate) MKT_PRICE
    FROM
         (SELECT VALUE_DATE, STK_EXCH, SECURITY, MKT_PRICE FROM MKT
         ) m,
         (SELECT TRUNC(SYSDATE, 'MM')-1+LEVEL mydate FROM dual CONNECT BY LEVEL <= 30
         )n
    WHERE TRUNC(m.VALUE_DATE(+)) = TRUNC(n.mydate)
    ORDER BY n.mydate;
    

    またはもう少し具体的に:以下を使用してください:

    SELECT full_date,
         NVL(stk_exch,last_value(stk_exch IGNORE NULLS)OVER(ORDER BY full_date))stk_exch,
         NVL(security,last_value(security IGNORE NULLS)OVER(ORDER BY full_date))security,
         NVL(mkt_price,last_value(mkt_price IGNORE NULLS)OVER(ORDER BY full_date))mkt_price
    FROM
         (SELECT TRUNC(m.vd,'MM')-1+LEVEL FULL_DATE
         FROM
              (SELECT MIN(VALUE_DATE) vd FROM mkt
              WHERE TO_CHAR( value_date, 'MM/YYYY') = TO_CHAR(sysdate-12,'MM/YYYY') -- this line may vary to your requirement
              ) m
         CONNECT BY LEVEL <= TO_CHAR(LAST_DAY(M.VD), 'DD')
         )first_q,
         ( SELECT value_date, stk_exch, SECURITY, mkt_price FROM mkt
         )r
    WHERE first_q.full_date = TRUNC(r.value_date(+))
    ORDER BY full_date;
    

    ここでフィドルを参照




    1. アクセスソースコード管理にOASIS-SVNとgitを使用する

    2. phpmysqlIN句がCSV変数で機能しません。最初の行のみが影響を受けます

    3. PHPで単語を検索するときのMySQL5.6全文検索の問題

    4. 私のAndroidプロジェクトでmySQLを接続する方法は?