一个SQL语句,几个表组合汇总的问题(100分)(100分)

  • 主题发起人 主题发起人 HTDYK126
  • 开始时间 开始时间
H

HTDYK126

Unregistered / Unconfirmed
GUEST, unregistred user!
一、请看以下表:
表1(进货表-top)
进货编号 供应商编号 供应名称 入货时间 ...
JL-001 K123 国际电子 2006-08-10
JL-002 K456 美国电子 2006-07-01
JL-003 K789 日本电子 2006-06-04
表2(进货表-main)
进货编号 商品编号 进货数量 ....
JL-001 美人鱼1 100
JL-001 美人鱼2 100
JL-002 玩具2 100
JL-002 玩具3 100
JL-003 玩具4 100
JL-001 玩具1 100
表3(退货表-top)
退货编号 供应商编号 供应名称 入货时间 ...
JL-001 K123 国际电子 2006-08-10
JL-002 K456 美国电子 2006-07-01
JL-003 K789 日本电子 2006-06-04
表4(退货表-main)
退货编号 商品编号 退货数量 ....
JL-001 美人鱼1 1
JL-001 美人鱼2 2
JL-002 玩具2 3
JL-002 玩具3 4
JL-003 玩具4 5
JL-001 玩具1 6

二、我要这样的一个结果:
供应商名称 进货数量 退货数量 合计数量
国际电子 300 9 291
美国电子 200 7 193

日本电子 100 5 95
 
select 供应商名称,进货数量,退货数量,(进货数量-退货数量) as 合计数量
from (select 供应商名称,sum (进货数量) as 进货数量 from 进货表-main a ,进货表-top b where a.进货编号 =b.进货编号 ) c , (select 供应商名称,sum (退货数量) as 退货数量 from 退货表-main e ,退货表-top f where e.进货编号 =f.进货编号 ) g where c.供应商名称=g.供应商名称
 
有这样的错误:
列名 '供应商名称' 无效。
 
创意、自由、灵活,超强的报表功能,独特的双数据源连接,全功能的表格组件!
http://www.anylib.com
 
把供应商名称改为"供应名称"就应该OK了
 
列名 '供应名称' 无效。
 
我只是给你方式,列名称需要你自己对照。我的可能是错的。
 
如果存在供应商表,则:
select z1.供应商编号,isnull(z2.进货数量,0) as 进货数量,isnull(z3.退货数量,0) as 退货数量,isnull(z2.进货数量,0)-isnull(z3.退货数量,0) as 合计数量 from 供应商表 z1 left outer join (select a.供应商编号,sum(b.进货数量) as 进货数量 from 进货表-top a,进货表-main b where a.进货编号=b.进货编号 group by a.供应商编号) z2 on a.bh=b.bh left outer join (select c.供应商编号,sum(d.退货数量) as 退货数量 from 退货表-top c,退货表-main d where c.退货编号=d.退货编号 group by c.供应商编号) z3 on z1.供应商编号=z3.供应商编号
如果不存在供应商表,则用以下语句代替供应商表:
(select distinct 供应商编号,供应商名称 from (select 供应商编号,供应商名称 from 进货表-top union select 供应商编号,供应商名称 from 退货表-top) Y)
 
isnull(z2.进货数量,0)和outer,有和意义。谢谢提供这方面的信息。
 
isnull:空则返回第二个参数,否则返回自身
outer:若左边参数是left,则左边的表全选,右边的表存在就加上去,不存在相应字段就置为空;不能单独使用;另外一种情况是左边是right,和left相反
 
OK,
dey-999好厉害。搞几年了。
请推荐几本DELPHI和SQL的好书籍好不。TKS!
 
嘿嘿,不到1年,但是我的SQL到是不错,主要是用,你必须自己经常想,何况DFW上的东西本身就相当不错,大家的疑问也是你锻炼的机会呀,乱说的,我不过是一个新手+1而已,嘿嘿嘿
 
后退
顶部