如何根据mysql表中的现有数据对插入的行进行计算

时间:2012-12-15 00:39:16

标签: mysql

下面是初始表创建查询,它产生所需的基本价值 - 这不是问题,而且运行正常。

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

0 个答案:

没有答案