如何写这个SQL语句?(100分)

  • 主题发起人 主题发起人 Wanderingtalk
  • 开始时间 开始时间
W

Wanderingtalk

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个数据表-出库和入库 (paradox数据表)
入库表
类别 名称 数量 来自
a abc 2
b sdf 3
c erd 3
a abc 3

出库表
类别 名称 数量 去向
b sdf 2
a abc 1
a abc 1
查询结果:
a abc 3
b sdf 1
c erd 3
查询语句该如何写?(用Union不行)


 
试一试?
sql2000应该可以,paradox没用过,不知行不行?
select a.类别,a.名称,a.sum1-b.sum2 from
( select T1.类别,T1.名称,sum(T1.数量) sum1 from 入库表 T1 group by T1.类别,T1.名称) a,
left join
( select T2.类别,T2.名称,sum(T2.数量) sum2 from 出库表 T2 group by T2.类别,T2.名称) b
on a.类别=b.类别
 
我也正想解决这个问题!
 
提高奖金——>200!!!!!
 
我的语句不行吗?
是不是paradox不支持子查询?
那你建两个视图代替那两个子查询不就行了?
 
我觉得可以在数据结构上下点功夫,看看以下结构的表:
类别
名称
数量
来自/去向
方向 入库时=1,出库时=-1
这样查询时库存时只要:
select 类别,名称,sum(数量*方向) from ... group by 类别,名称
我的心得就是:数据结构的设计如何,很大程度上影响着编程的效率。
 
to wanderingtalk:
我这下面是四张表的。
goodz:是商品管理表
store:是期初库存表
storedetail:是入库数量表
selldetail:是出库数量表
ELECT dbo.Goodz.GoodzName, SUM(dbo.Store.Amount) AS Expr1,
SUM(dbo.StoreDetail.Amount) AS Expr2, SUM(dbo.SellDetail.Amount) AS Expr3,
FROM dbo.Goodz LEFT OUTER JOIN
dbo.StoreDetail ON dbo.Goodz.GoodzID = dbo.StoreDetail.Goodz LEFT OUTER JOIN
dbo.SellDetail ON dbo.Goodz.GoodzID = dbo.SellDetail.Goodz LEFT OUTER JOIN
dbo.Store ON dbo.Goodz.GoodzID = dbo.Store.Goodz
WHERE (dbo.Goodz.GoodzID IN
(SELECT Goodz
FROM store)) OR
(dbo.Goodz.GoodzID IN
(SELECT Goodz
FROM storedetail)) OR
(dbo.Goodz.GoodzID IN
(SELECT Goodz
FROM selldetail))
GROUP BY dbo.Goodz.GoodzName
我想应该对你有用。
 
几天没来,没想到问题还在,很抱歉。可我明明已经结束讨论了,连分都送出了。只得再来一次。
我的问题已经解决,谢谢各位。
 
后退
顶部