下面是生成所需基本价格值的初始表创建查询 - 这不是问题并且工作正常。
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 IBM -0.001 106.025 2012 年 11 月 2 日上午 12:00:00 IBM 0.001 104.403 2012 年 11 月 9 日上午 12:00:00 IBM -0.015 102.92 11/16/2012 12:00:00 AM 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 IBM 0.01
还要计算基本价格,以便新行读取:
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