以下は、必要な 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