求一个计算采购节约金额的存储过程

yodong 2010-06-12 05:25:37
表名:所有采购记录(ID,物料编号,单价,金额,日期.)
要求输入日期范围.得出
年度,月份,材料编号,数量,节约金额,基准价格
单个物料基准价格计算方法:
1:对于当年1月1日前发生过入库的物料
单个物料基准价格=当年1月1日前此物料最后一次入库价格
2:对于当年1月1日前未发生过入库的物料
单个物料基准价格=当年此物料第一次入库价格
================================
大家帮帮忙!
...全文
123 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yodong 2010-06-13
  • 打赏
  • 举报
回复
谢谢xys_777朋友.可以得出结果.但是还要考虑一个物料同时有两个供应商供货.那需要把这两个供应商的最后一次采购价取平均值作为基准价格.这个怎么改呢?
yodong 2010-06-13
  • 打赏
  • 举报
回复
谢谢xys_777朋友.
我先试试.不过还有个问题要考虑,就是可能一个物料同时有两个供应商供货.那需要把这两个供应商的最后一次采购价取平均值作为基准价格.
永生天地 2010-06-12
  • 打赏
  • 举报
回复
这个有结果吗
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(日期),物料编号
dawugui 2010-06-12
  • 打赏
  • 举报
回复
请你仔细看9楼的说明.
yodong 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dawugui 的回复:]
你的意思是按照每种物料的第一次的采购金额为准?
[/Quote]
==============
不是以第一次的为准.有两种情况.
1:对于当年1月1日前发生过入库的物料
单个物料基准价格=当年1月1日前此物料最后一次入库价格
2:对于当年1月1日前未发生过入库的物料
单个物料基准价格=当年此物料第一次入库价格
dawugui 2010-06-12
  • 打赏
  • 举报
回复
你的意思是按照每种物料的第一次的采购金额为准?


最好给出完整的表结构,测试数据,计算方法和正确结果.


发帖注意事项
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
yodong 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xys_777 的回复:]
节约金额 是什么意思?
[/Quote]
==============
单个物料月节约金额=此物料基准价格*此物料当月入库总数量-此物料当月入库总金额

比如:A材料,2010年1月份采购价格是:10元.,采购10个,2010年2月份采购是9元.采购10个,2010年3月份是8元采购10个.那么就认为节约了金额.
查询出来的结果是:

年度月份 基准价格 节约金额 数量
2010年1月 10 0 10
2010年2月 10 10 10
2010年3月 10 20 10




永生天地 2010-06-12
  • 打赏
  • 举报
回复
不懂,纯属猜测
[Quote=引用 6 楼 xys_777 的回复:]
SQL code

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 w……
[/Quote]
永生天地 2010-06-12
  • 打赏
  • 举报
回复

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(日期),物料编号
-狙击手- 2010-06-12
  • 打赏
  • 举报
回复
当年1月1日前,是前一年呢,还是不管只要之前发生过
yodong 2010-06-12
  • 打赏
  • 举报
回复
数量,漏了.不好意思
zhouzhi12345 2010-06-12
  • 打赏
  • 举报
回复
不知道怎么算!~~~~~~~~~~~~~~~~
-狙击手- 2010-06-12
  • 打赏
  • 举报
回复
所有采购记录里也没有数量,怎么统计呀?
永生天地 2010-06-12
  • 打赏
  • 举报
回复
节约金额 是什么意思?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧