再求:这条SQL语句吗?(没有入库/领出的材料也要在结果表中)谢谢!(50分)

F

fbb1

Unregistered / Unconfirmed
GUEST, unregistred user!
已知以下四个表

·材料数据表(T1):此表以编号为索引,且没有重复记录

编号 品种 厂商
1 AAA aa
2 BBB bb
3 CCC cc
4 DDD dd
5 eee ee


·月初数量表(T2):此表以编号为索引,且没有重复记录

编号 月初库存
1 50
2 40
3 10
4 15
5 55

·材料入库明细表(T3):此表以编号为索引,有重复记录

编号 入库量
2 40
1 15
3 60
4 50
2 40
3 35
1 15
2 80

·材料领用明细表(T4):此表以编号为索引,有重复记录

编号 领用量
4 7
2 5
3 4
3 3
4 2
1 5
2 6
2 7

求以下结果表的SQL的语句?

·T1中的所有记录,在结果表中都要有,无论有无入库/领出(请见‘ 编号 5 ’)
·T2 和 T3 都要进行分类汇总
·请注明语句适用语言(在VF6中‘from (Select * )’此类语句有语法错)


编号 品种 厂商 月初库存 入库量 领用量 库存量
1 AAA aa 50 30 5 75
2 BBB bb 40 160 18 182
3 CCC cc 10 95 7 98
4 DDD dd 15 50 9 56
5 eee ee 55 0 0 55
 
select t1.编号,t1.品种,t1. 厂商,sum(t2. 月初库存),sum(t3.入库量),sum(t4.领用量)
sum(t2. 月初库存)+sum(t3.入库量)-sum(t4.领用量)
from t1
left join t2 on t1.编号=t2.编号
left join t3 on t1.编号=t3.编号
left join t4 on t1.编号=t4.编号
group by t1.编号,t1.品种,t1. 厂商
 
SELECT t1.code ,t1.name,t1.provider ,
(isnull(t2.月初库存,0)) as 月初,
(isnull(t3.IN_VAL,0)) as 入库,
(isnull(t4.OUT_VAL,0)) as 出库,
((isnull(t2.月初库存,0))+(isnull(t3.IN_VAL,0))-(isnull(t4.OUT_VAL,0))) as 库存
FROM t1 , t2 ,
(SELECT code,SUM(value) IN_VAL FROM t3 GROUP BY code ) t3,
(SELECT code,SUM(value) OUT_VAL FROM t4 GROUP BY code) t4,
WHERE t1.code *= t2.code AND t1.code *= t3.code AND t1.code *= t4.code
ORDER BY c.code

你去试试,应该没有问题的。
 
另外,把你的实验结果拿出来讨论讨论。
 
select c.编号 ,c.品种 ,c.厂商 ,c.月初库存,c.入库量 ,d.领用量
from
( select a.编号 ,a.品种 ,a.厂商 ,a.月初库存,b.入库量
from
(select t1.编号 ,t1.品种 ,t1.厂商 ,t2.月初库存
from t1 left outer join t2 on t1.编号=t2.编号 )
as a(编号 ,品种 ,厂商 ,月初库存 )
left outer join
(select 编号,sum(入库量) from t3 group by 编号)
as b(编号,入库量)
on a.编号=b.编号
)
as c(编号 ,品种 ,厂商 ,月初库存,入库量)
left outer jion
( select 编号,sum(领用量) from t4 group by 编号 )
as d(编号,d.领用量)
on c.编号=d.编号;

此SQL在SQL ANYWHERE 下可以执行。
在别的下不知道能不能行,可以变通一下,把几个内部的SELECT 换成三个视图肯定可以
自己去试一 试吧。

 
顶部