我现在的处理方法(没有解决同商品有两种以上价格的问题): 1 建立一个游标=select 办事处名称 from 办事处表 where 办事处编号!=1 然后 varchar(500) @SQL='create table test(大类,小类……,单价' 然后操作游标 set @SQL=@SQL+游标值 ……循环 exec (@sql) 2 select 大类 小类 型号 from 产品表 把数据插入刚建立的sell表 3 根据库房表等算出各种产品的 初始数 入库 出库 然后插入刚建立的sell表 4 建立一个游标=select sum(数量),办事处编号 from 销售表 group by (办事处编号) 操作游标将数据判断然后写入sell表 5 计算出合计金额以上并没有解决如前面所说的同商品不同价的问题
-- 创建视图 create view 汇总所有表 as select 大类,小类,型号,入库,出库,库存,价格,办事处名称 from ( select 大类,小类,型号,入库,出库,库存,价格,销售单位 from -- 得出BB表(产品编号,出库,入库,库存,价格,销售单位) (select mm.产品编号,出库,入库,库存,价格,mm.销售单位 from (-- 出入库,库房表的联接(得出:出库,入库,库存) select kk.产品编号,出库,入库,数量+入库-出库 as 库存,所属 as 销售单位 from (select 产品编号=(case when ii.产品编号 is null then jj.产品编号 else ii.产品编号 end),出库,入库 from (select 产品编号,sum(数量) as 出库 from 出库表 where day(日期)=day(getdate()) group by 产品编号) ii full outer join (select 产品编号,sum(数量) as 入库 from 入库表 where day(日期)=day(getdate()) group by 产品编号) jj on jj.产品编号=ii.产品编号) kk left join 库房表 ll on kk.产品编号=ll.产品编号) mm full outer join (select sum(数量) as 销售数量,价格,产品编号,销售单位 from 销售表 group by 销售单位,产品编号,价格) nn on mm.产品编号=nn.产品编号 and mm.销售单位=nn.销售单位) BB left join 产品表 AA on AA.产品编号=BB.产品编号) cc left join 办事处表 dd on dd.办事处编号=cc.销售单位你认真看吧,亏我写了大半天,大概就这样了,还有一些细节步骤你自己实现了
TO 小明兄: 小弟愚笨,看了半天,没太明白 你能不能把你给的哪个视图说详细点,里面的kk啊ii是什么表啊? 谢谢了!对,我也讨厌游标,更讨厌建表,慢死了!
产品表:(此表有很多条记录)
产品编号 大类 小类 型号
1001 手机 MOTO V66
1002 手机 MOTO V70
1003 手机 NOKIA 2100办事处表:(此表有很多条记录)
办事处编号 办事处名称 办事处类别
1 公司
2 第一营业厅 营业厅
3 第二营业厅 营业厅入库表:(此表为公司入库情况表,一次入库操作写入一条记录)
入库编号 产品编号 数量 日期
1 1001 40 2004-8-18
2 1002 60 2004-8-18
3 1003 90 2004-8-18
3 1001 20 2004-8-18出库表:(此表为公司对各办事处的出库情况,一次出库操作写入一条记录)
出库编号 产品编号 数量 日期 出库单位(办事处编号)
1 1001 30 2004-8-18 2
2 1002 10 2004-8-18 3
3 1002 20 2004-8-18 2库房表:(此表为公司及各办事处的库存情况表)
ID 产品编号 数量 所属(即办事处编号)
1 1001 30 1(公司)
2 1002 30 1
3 1003 90 1
4 1001 20 2
5 1002 16 2
6 1002 7 3销售表:(此表为各办事处销售情况,一次销售写入一条记录)
编号 产品编号 价格 数量 销售单位 日期
1 1001 1000 5 2 2004-8-18
2 1002 800 4 2 2004-8-18
3 1002 800 3 3 2004-8-18
4 1001 1100 5 2 2004-8-18
请注意这个地方:同一种产品,产生了两次不同的销售价格
大类 小类 型号 初始数 入库 出库 库存 单价 第一营业厅 第二营业厅 合计
手机 MOTO V66 0 60 30 30 1000 5 0
手机 MOTO V66 0 -- -- -- 1100 5 0
手机 MOTO V70 0 60 30 30 800 4 3
手机 NOKIA 2100 0 90 0 90 --- 0 0
1 建立一个游标=select 办事处名称 from 办事处表 where 办事处编号!=1
然后 varchar(500) @SQL='create table test(大类,小类……,单价'
然后操作游标 set @SQL=@SQL+游标值 ……循环
exec (@sql)
2 select 大类 小类 型号 from 产品表 把数据插入刚建立的sell表
3 根据库房表等算出各种产品的 初始数 入库 出库 然后插入刚建立的sell表
4 建立一个游标=select sum(数量),办事处编号 from 销售表 group by (办事处编号)
操作游标将数据判断然后写入sell表
5 计算出合计金额以上并没有解决如前面所说的同商品不同价的问题
create view 汇总所有表 as
select 大类,小类,型号,入库,出库,库存,价格,办事处名称 from
( select 大类,小类,型号,入库,出库,库存,价格,销售单位 from
-- 得出BB表(产品编号,出库,入库,库存,价格,销售单位)
(select mm.产品编号,出库,入库,库存,价格,mm.销售单位 from
(-- 出入库,库房表的联接(得出:出库,入库,库存)
select kk.产品编号,出库,入库,数量+入库-出库 as 库存,所属 as 销售单位 from
(select 产品编号=(case when ii.产品编号 is null then jj.产品编号 else ii.产品编号 end),出库,入库 from (select 产品编号,sum(数量) as 出库 from 出库表 where day(日期)=day(getdate()) group by 产品编号) ii
full outer join
(select 产品编号,sum(数量) as 入库 from 入库表 where day(日期)=day(getdate()) group by 产品编号) jj on jj.产品编号=ii.产品编号) kk
left join 库房表 ll on kk.产品编号=ll.产品编号) mm full outer join
(select sum(数量) as 销售数量,价格,产品编号,销售单位 from 销售表 group by 销售单位,产品编号,价格) nn on mm.产品编号=nn.产品编号 and mm.销售单位=nn.销售单位) BB
left join 产品表 AA on AA.产品编号=BB.产品编号) cc left join 办事处表 dd on dd.办事处编号=cc.销售单位你认真看吧,亏我写了大半天,大概就这样了,还有一些细节步骤你自己实现了
小弟愚笨,看了半天,没太明白
你能不能把你给的哪个视图说详细点,里面的kk啊ii是什么表啊?
谢谢了!对,我也讨厌游标,更讨厌建表,慢死了!
有其他联系方式吗?