如何从上个月获取数据导致SQL Server

时间:2014-05-31 07:14:01

标签: c# sql sql-server visual-studio-2010

我有2个表msfr

ms包含列pid,monthtotalsales,而fr包含pid, monthforecast

在两个表格中,每个pid都有12个基于月份的记录。

我实际上想要计算公式为(0.3 * totalsales) + (0.7 * previous month result of forecast)的需求。上个月的预测结果就像用户选择pid 2和month 2一样,然后将第1个月的预测结果作为计算数据。

我已经尝试了但是没有返回所需的结果:

select 
    ((0.3 * totalsalesamount) + (0.7 * forecastdemand)) as demand 
from 
    Monthlysales, forecastreorder 
where 
    Monthlysales.P_ID = forecastreorder.Productid 
    and Monthlysales.P_ID = 1 
    and forecastreorder.Month = 2

当我执行上面的代码时,结果基于每个forecast结果。例如,当我选择pid 1,month 2时,它也会从forecast 2获取month结果。同时我希望它将forecast 1的month结果作为其计算数据。

2 个答案:

答案 0 :(得分:0)

尝试使用sql上个月来获取

SELECT Convert(datetime, DateAdd(month, -1, Convert(date, GetDate())));

答案 1 :(得分:0)

使用类似的表但使用年份字段,使用ISNULL表示没有找到前一个飞蛾的数据,假设前一个是月销售额。

SELECT    
   0.3 * ms.totalsalesamount + 0.7 * ISNULL(fr.forecastdemand, ms.totalsalesamount) as demand
FROM            
   ms 
LEFT OUTER JOIN
   fr ON ms.pid = fr.pid 
      AND fr.month = CASE WHEN ms.month > 1 THEN ms.month - 1 ELSE 12 END 
      AND fr.year = CASE WHEN ms.month > 1 THEN ms.year ELSE ms.year - 1 END