关于单价的执行日期的处理
来源:互联网 发布:岚锋创视网络 编辑:程序博客网 时间:2024/05/03 20:43
在单价管理的实际应用中,因单价变更后不会马上执行,会有一个正式开始执行日期,所以,在单价表需要添加一个执行日期的字段,在单价表中,同一编号的物品会存在一个以上的单价。业务单据业务单据发生时,要准确获取当时正在使用的单价信息(有效单价),就不能靠简单的SQL表连接来查询
思路:
根据业务单据的发生日期过滤出目前正在使用的单价,在SQL中的获取方法是使用MAX函数得到某个编号物品的最接近业务单据日期的执行开始日单价
分析:
1、如果只查一张单据所包含物品的单价,处理起来就比较简单。假设有单据表(编号,数量,日期)和单价表(编号,单价,执行日期),实现如下:
select 单据表.编号,单价.单价 from 单据表 join (select a.编号,a.单价 from 单价表 a join
(select 编号,max(执行日期) as 执行日期 from 单价表 where 执行日期<'2008-10-1' group by 编号) b
on a.编号=b.编号 and a.执行日期=b.执行日期 ) as 单价
on 单据表.编号=单价.编号
以上代码是查询某一日期正在使用的单价列表,日期可以通过程序传入
2、以上代码可以查询某一张单据的使用单价,但是有时候要对历史单据进行汇总分析,就需要查多张单据的当时使用单价,采用以上的方法就无效了。可以使用游标的方法,逐条记录处理,再把结果插入新表中,实现代码如下
declare @NO char(10)
declare @qty numeric(18,3)
declare @d smalldatetime
declare cur1 cursor for
select 编号,数量,日期 from 库存量
open cur1
fetch next from cur1 into @NO,@QTY,@D
while (@@fetch_status=0)
begin
insert into #temp1(编号,数量,单价,日期)
select a.编号,数量=@QTY,a.单价,@D from 单价表 a join
(select 编号,max(执行日期) as 执行日期 from 单价表 where 执行日期<@d group by 编号) as b
on (a.编号=b.编号 and a.执行日期=b.执行日期) where a.编号=@NO
fetch next from cur1 into @NO,@QTY,@D
end
close cur1
deallocate cur1
- 关于单价的执行日期的处理
- 关于日期的处理
- 关于java的日期处理
- 关于日期的一些处理
- 关于日期的相关处理
- sqlite关于日期的处理
- 关于日期处理的小用例
- 关于js日期的处理
- 关于日期时间的处理
- 百货的客单价-林财添
- c#中关于日期的处理!
- php关于1970年前日期的处理
- 关于面向对象的日期处理源代码
- 一个关于日期处理的类:Calendar。
- Java中关于日期的处理
- 关于oc日期相关处理的方法
- ORACLE 关于一些日期处理的sql
- 关于日期处理的 sql语句
- 使用ASP.NET 2.0 GridView轻松操作数据
- 改造jasperreports for struts2插件,增加多种数据源提供能力
- Javascript经典正则表达式(参考资料)
- 计算机故事
- Ms-Sql数据库文件太大处理
- 关于单价的执行日期的处理
- 句柄
- 正则表达式
- return和exit的区别以及为什么vfork的子进程不能return
- Windows平台上的Apache+Tomcat配置指南
- c#.net 常用的获取时间年月日时分秒格式
- 正则表达式[Regular Expression]使用详解
- 和上司领导沟通必备8个黄金句
- UT斯达康杭州宣布裁员15% 华为跟进裁员