表名:所有采购记录(ID,物料编号,单价,金额,日期.)
要求输入日期范围.得出
年度,月份,材料编号,数量,节约金额,基准价格
单个物料基准价格计算方法:
1:对于当年1月1日前发生过入库的物料
单个物料基准价格=当年1月1日前此物料最后一次入库价格
2:对于当年1月1日前未发生过入库的物料
单个物料基准价格=当年此物料第一次入库价格
================================
大家帮帮忙!
要求输入日期范围.得出
年度,月份,材料编号,数量,节约金额,基准价格
单个物料基准价格计算方法:
1:对于当年1月1日前发生过入库的物料
单个物料基准价格=当年1月1日前此物料最后一次入库价格
2:对于当年1月1日前未发生过入库的物料
单个物料基准价格=当年此物料第一次入库价格
================================
大家帮帮忙!
select year(日期)年度,month(日期)月份,物料编号,sum(数量)数量,
节约金额 = 0,
基准价格 = isnull(
(select top 1 单价 from tb where year(日期)<year(t.日期) and 物料编号=t.物料编号 order by 日期 desc),
(select top 1 单价 from tb where year(日期)=year(t.日期) and 物料编号=t.物料编号 order by 日期 )
)
from tb
group by year(日期),month(日期),物料编号
最好给出完整的表结构,测试数据,计算方法和正确结果.发帖注意事项
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
select year(日期)年度,month(日期)月份,物料编号,sum(数量)数量,
节约金额 = sum(数量)*(isnull(
(select top 1 单价 from tb where year(日期)<year(t.日期) and 物料编号=t.物料编号 order by 日期 desc),
(select top 1 单价 from tb where year(日期)=year(t.日期) and 物料编号=t.物料编号 order by 日期 )
)- 金额),
基准价格 = isnull(
(select top 1 单价 from tb where year(日期)<year(t.日期) and 物料编号=t.物料编号 order by 日期 desc),
(select top 1 单价 from tb where year(日期)=year(t.日期) and 物料编号=t.物料编号 order by 日期 )
)
from tb
group by year(日期),month(日期),物料编号
我先试试.不过还有个问题要考虑,就是可能一个物料同时有两个供应商供货.那需要把这两个供应商的最后一次采购价取平均值作为基准价格.