1

以下は、必要な baseprice 値を生成する最初のテーブル作成クエリです。これは問題ではなく、正常に機能します。

CREATE TABLE Tablebaseprice
SELECT    @PrevBasePrice := CASE
            WHEN @prevITS = st.its AND st.ppc IS NOT NULL THEN
              round(((1+st.ppc)*@prevBaseprice),3)
            ELSE 100
          END Baseprice,
          st.Date AS Date,
          @prevITS := st.its its,
          st.PPC
FROM      stemp st
ORDER BY  st.its, st.date;

しかし、既存のテーブルに新しい行を挿入するときに Baseprice を計算する方法がわかりません。Baseprice は、特定の ITS の最後の行または前の行の baseprice (prevBaseprice) を取得し、それに (1+ppc) を掛けることによって計算されます。したがって、既存のテーブル内の任意の ITS の baseprice の最後のインスタンスを取得して乗算できるようにする必要があります。私が挿入しようとしている行の新しい基本価格を生成する PPC によって。

以下は、既存のテーブルのデータです。

baseprice 日付の ppp
114.401 2012 年 10 月 12 日午前 12:00:00 IBM -0.013
105.993 2012 年 10 月 19 日午前 12:00:00 IBM -0.073
105.94 2012 年 10 月 26 日 12:00:00 AM IBM -0.001
106.025 2012 年 11 月 2 日 12:00:00 AM IBM 0.001
104.403 11/09/2012 12:00:00 AM IBM -0.015
102.92 2012 年 11 月 16 日午前 12:00:00 IBM -0.014
106.522 2012 年 11 月 23 日午前 12:00:00 IBM 0.035

しかし、私は以下を挿入したい:

2012 年 11 月 30 日午前 12:00:00 IBM -0.018
2012 年 12 月 7 日 12:00:00 AM IBM 0.01

baseprice も計算するため、新しい行が読み取られます。

104.605 11/30/2012 12:00:00 AM IBM -0.018 /*(104.637=(1+ -0.018)*106.522*/
105.673 12/07/2012 12:00:00 AM IBM 0.01
4

0 に答える 0