我有2个表ms
和fr
。
ms
包含列pid,month
和totalsales
,而fr
包含pid, month
和forecast
。
在两个表格中,每个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
结果作为其计算数据。
答案 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