求问题解决方案与代码!
时间:2011-11-20
来源:互联网
背景:
现有3张表:
InSto090210cyr(进仓表)
InStoDate char(10), 日期为自动获取系统时间
InStoNo varchar(20) PRIMARY KEY, 进仓编号:‘时间’+‘当前表条目数+1’
MatNo char(6), 物料代码
MatName char(20), 物料名称
InStoTotal int CHECK(InStoTotal>=0), 进仓数量
StaNo char(6), 经办人代码
StaName char(8), 经办人名
InStoNotes text 备注
OutSto090210cyr(出仓表)
OutStoDate char(10), 日期为自动获取系统时间
OutStoNo varchar(20) PRIMARY KEY, 进仓编号:‘时间’+‘当前表条目数+1’
MatNo char(6), 物料代码
MatName char(20), 物料名称
OutStoTotal int CHECK(OutStoTotal>=0), 出仓数量
StaNo char(6), 经办人代码
StaName char(8), 经办人名
OutStoNotes text 备注
Materials090210(物料表)
MatNo char(6) PRIMARY KEY,
MatName char(20),
MatClass char(8),
MatType char(4),
MatUnit char(2),
MatTotal int,
MatHigh int,
MatLow int
我想得到一个存储过程:
传入 @time1 @time2 @MatNo
得到下面的结果:
MatNo MatName MatClass MatType MatUnit MatTotal 进仓总数 出库总数 总流动量大小
个人思路:
1.创建一个临时表#temple
2.然后把Materials090210里需要的列select into
3.再通过存储过程
--**********统计指定时间段的物料总数(进仓单)
create procedure ProStadisInToTal090210cyr
(
@time1 char(10),
@time2 char(10)
)
as
select MatNo,sum(InStoTotal)进仓总数
from InSto090210cyr
where datediff(day,InStoDate,@time1)<=0 and datediff (day,InStoDate,@time2)>=0
group by MatNo
GO
得到(MatNo 进仓总数)插到#temple
4.--**********统计指定时间段的物料总数(出仓单)
create procedure ProStadisOutToTal090210cyr
(
@time1 char(10),
@time2 char(10)
)
as
select MatNo,sum(OutStoTotal)出仓总数
from OutSto090210cyr
where datediff(day,OutStoDate,@time1)<=0 and datediff (day,OutStoDate,@time2)>=0
group by MatNo
GO
得到(MatNo 出仓总数)插到#temple
5.最后用存储过程
create procedure ProStadisToTal090210cyr01 @time1 char(10),@time2 char(10)
as
begin
select MatNo , sum(总数) 总数 from
(
select MatNo,sum(InStoTotal)总数
from InSto090210cyr
where datediff(day,InStoDate,@time1)<=0 and datediff (day,InStoDate,@time2)>=0
group by MatNo
union all
select MatNo,sum(OutStoTotal)总数 from OutSto090210cyr
where datediff(day,OutStoDate,@time1)<=0 and datediff (day,OutStoDate,@time2)>=0
group by MatNo
)t
group by MatNo order by 总数
end
得到(MatNo 总数) 插入#temple
6.最后把得到集合,通过select * from #temple where MatNo=@MatNo 得到的集合 返回给delphi ADOQuery!
写了半天就是写不出来,求大侠指点啊!
有其他方法也行啊,毕竟我菜鸟一个啊!
在线等啊!
现有3张表:
InSto090210cyr(进仓表)
InStoDate char(10), 日期为自动获取系统时间
InStoNo varchar(20) PRIMARY KEY, 进仓编号:‘时间’+‘当前表条目数+1’
MatNo char(6), 物料代码
MatName char(20), 物料名称
InStoTotal int CHECK(InStoTotal>=0), 进仓数量
StaNo char(6), 经办人代码
StaName char(8), 经办人名
InStoNotes text 备注
OutSto090210cyr(出仓表)
OutStoDate char(10), 日期为自动获取系统时间
OutStoNo varchar(20) PRIMARY KEY, 进仓编号:‘时间’+‘当前表条目数+1’
MatNo char(6), 物料代码
MatName char(20), 物料名称
OutStoTotal int CHECK(OutStoTotal>=0), 出仓数量
StaNo char(6), 经办人代码
StaName char(8), 经办人名
OutStoNotes text 备注
Materials090210(物料表)
MatNo char(6) PRIMARY KEY,
MatName char(20),
MatClass char(8),
MatType char(4),
MatUnit char(2),
MatTotal int,
MatHigh int,
MatLow int
我想得到一个存储过程:
传入 @time1 @time2 @MatNo
得到下面的结果:
MatNo MatName MatClass MatType MatUnit MatTotal 进仓总数 出库总数 总流动量大小
个人思路:
1.创建一个临时表#temple
2.然后把Materials090210里需要的列select into
3.再通过存储过程
--**********统计指定时间段的物料总数(进仓单)
create procedure ProStadisInToTal090210cyr
(
@time1 char(10),
@time2 char(10)
)
as
select MatNo,sum(InStoTotal)进仓总数
from InSto090210cyr
where datediff(day,InStoDate,@time1)<=0 and datediff (day,InStoDate,@time2)>=0
group by MatNo
GO
得到(MatNo 进仓总数)插到#temple
4.--**********统计指定时间段的物料总数(出仓单)
create procedure ProStadisOutToTal090210cyr
(
@time1 char(10),
@time2 char(10)
)
as
select MatNo,sum(OutStoTotal)出仓总数
from OutSto090210cyr
where datediff(day,OutStoDate,@time1)<=0 and datediff (day,OutStoDate,@time2)>=0
group by MatNo
GO
得到(MatNo 出仓总数)插到#temple
5.最后用存储过程
create procedure ProStadisToTal090210cyr01 @time1 char(10),@time2 char(10)
as
begin
select MatNo , sum(总数) 总数 from
(
select MatNo,sum(InStoTotal)总数
from InSto090210cyr
where datediff(day,InStoDate,@time1)<=0 and datediff (day,InStoDate,@time2)>=0
group by MatNo
union all
select MatNo,sum(OutStoTotal)总数 from OutSto090210cyr
where datediff(day,OutStoDate,@time1)<=0 and datediff (day,OutStoDate,@time2)>=0
group by MatNo
)t
group by MatNo order by 总数
end
得到(MatNo 总数) 插入#temple
6.最后把得到集合,通过select * from #temple where MatNo=@MatNo 得到的集合 返回给delphi ADOQuery!
写了半天就是写不出来,求大侠指点啊!
有其他方法也行啊,毕竟我菜鸟一个啊!
在线等啊!
作者: chinacyr 发布时间: 2011-11-20
SQL code
create procedure ProStadisInToTal090210cyr ( @time1 char(10), @time2 char(10), @MatNo char(10) ) as begin select MatNo,MatName,MatClass,MatType,MatUnit,MatTotal, (select sum(InStoTotal) from InSto090210cyr where InStoDate between @time1 and @time2 and MatNo=@MatNo)as 进仓数量, (select sum(OutStoTotal) from OutSto090210cyr where OutStoDate between @time1 and @time2 and MatNo=@MatNo)as 出仓数量 from Materials090210 where MatNo=@MatNo end
作者: qianjin036a 发布时间: 2011-11-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28