|
本帖最后由 zgfrqzone 于 2011-11-30 22:17 编辑
原SQL server中计算存储程序如下:
CREATE PROCEDURE 工费 AS
Declare @A int
Delete 工费明细表
insert into 工费明细表
Select * from 工费明细
Select @A=0
While @A<10
begin
delete 组件工费
insert into 组件工费
select 工序名,sum(isnull(定额工时,0)) as 工时, sum(isnull(工费,0)) as 工费, 所属件号 from 工费明细表 group by 所属件号,工序名
insert into 组件工费
select 视图2.工序名,视图2.定额工时 as 工时,视图2.工费 as 工费,组件价格.所属件号 from 视图2,组件价格 where 视图2.零件号=组件价格.所属件号
delete 组件工费2
insert into 组件工费2
select 工序名, sum(isnull(工时,0)) as 工时, sum(isnull(工费,0)) as 工费,所属件号 from 组件工费 group by 所属件号,工序名
delete 工费明细表 from 工费明细表,组件价格 where 工费明细表.零件号=组件价格.所属件号
insert into 工费明细表
select 结构表.零件号 as 零件号,结构表.单位件数 as 单位件数,组件工费2.工序名,组件工费2.工时*结构表.单位件数 as 定额工时,组件工费2.工费*结构表.单位件数 as 工费,结构表.所属件号 as 所属件号 from 结构表,组件工费2 where 结构表.零件号=组件工费2.所属件号
set @A=@A+1
end
select 所属件号 as 零件号,工序名, convert(numeric(8,2),工时) as 工时, convert(numeric(8,2),工费) as 工费 from 组件工费2
where exists
(select * from 视图2
Where 组件工费2.所属件号=视图2.零件号)
Union all
(select 零件号,工序名, convert(numeric(8,2),定额工时), convert(numeric(8,2),工费) from 视图2
Where not exists
(select * from 组件工费2
Where 视图2.零件号=组件工费2.所属件号))
Order by 零件号,工序名
GO
CREATE PROCEDURE 价格 AS
Declare @A int
Delete 产品价格表
Insert into 产品价格表
Select * from 产品价格
Select @A=0
While @A<10
Begin
Delete 组件价格
Insert into 组件价格
Select sum(isnull(材料成本,0)) as 材料成本, sum(isnull(工时,0)) as 工时, sum(isnull(工费,0)) as 工费, sum(isnull(合计,0)) as 合计,所属件号 from 产品价格表 group by 所属件号
Update 产品价格表
Set 产品价格表.材料成本=产品价格.材料成本+产品价格表.单位件数*组件价格.材料成本
产品价格表.工时=产品价格.工时+产品价格表.单位件数*组件价格.工时
产品价格表.工费=产品价格.工费+产品价格表.单位件数*组件价格.工费
产品价格表.合计=产品价格.合计+产品价格表.单位件数*组件价格.合计
From 产品价格表,组件价格,产品价格 where 产品价格表.零件号=组件价格.所属件号 and 产品价格表.零件号=产品价格.零件号
Set @A=@A+1
End
Select * from 产品价格表 order by 所属件号 asc,零件号 asc
GO
请帮我修改成在ACCESS2007中的用SQL语句创建查询。万分感谢!!!
如果在ACCESS 2007中用SQL查询实现不了,那该在使用什么工具来实现上述计算存储程序呢? |
|