下面是初始表创建查询,它产生所需的基本价值 - 这不是问题,而且运行正常。
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。
以下是现有表格中的数据:
baseprice Date its ppp 114.401 10/12/2012 12:00:00 AM IBM -0.013 105.993 10/19/2012 12:00:00 AM IBM -0.073 105.94 10/26/2012 12:00:00 AM IBM -0.001 106.025 11/02/2012 12:00:00 AM IBM 0.001 104.403 11/09/2012 12:00:00 AM IBM -0.015 102.92 11/16/2012 12:00:00 AM IBM -0.014 106.522 11/23/2012 12:00:00 AM IBM 0.035
但我想插入以下内容:
11/30/2012 12:00:00 AM IBM -0.018 12/07/2012 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