主题:查询两个表的sum
zhangheng77
[专家分:5510] 发布于 2005-11-30 17:45:00
早上看了个贴,下午想看答案来者,结果找不到了,只好我再问一下:
两个表:A,B,如下,求表c(其实求个查询结果如表c)
我想用两个查询
"出库数量"=(select sum(b.出库数量) from b where b.产品代码=a.产品代码 group by b.产品代码)
"入库数量"=...结果不能连接,不知道如何处理?
题:表A入库情况
产品代码 产品名称 入库数量
1001 aaa 10
1002 bbb 3
1003 ccc 5
1001 aaa 6
表B出库情况
产品代码 产品名称 出库数量
1001 aaa 5
1002 bbb 1
1003 ccc 0
c表显示查询结果:
产品代码 产品名称 入库数量 出库数量 库存
1001 aaa 16 5 11
1002 ................................
回复列表 (共5个回复)
沙发
cwb1128 [专家分:3120] 发布于 2005-11-30 18:42:00
select c.产品代码,c.产品名称,c.入库数量 ,d.出库数量,(c.入库数量-d.出库数量) as 库存 from
(
select a.产品代码,a.产品名称,sum(a.入库数量) 入库数量 from A a group by a.产品代码,a.产品名称
) c ,
(
select b.产品代码,b.产品名称 ,sum(b.出库数量) 出库数量 from B b group by b.产品代码,b.产品名称
) d where c.产品代码=d.产品代码
板凳
zhangheng77 [专家分:5510] 发布于 2005-11-30 19:04:00
好强啊!!
能帮我解释一下吗?
(select a.产品代码,a.产品名称,sum(a.入库数量) 入库数量 from A a group by a.产品代码,a.产品名称
) c ,
select b.产品代码,b.产品名称 ,sum(b.出库数量) 出库数量 from B b group by b.产品代码,b.产品名称
) d
是两个子查询,c,d是做什么成分的?别名??
是不是相当于:"c"=(select a.产品代码,a.产品名称,sum(a.入库数量) 入库数量 from A a group by a.产品代码,a.产品名称
)
遇到需要多个子查询返回的时候是不是都可以象这样 :
子查询 a,
子查询 b,
子查询 c,....
where a.no=b.no=c.no=.....
3 楼
zhangheng77 [专家分:5510] 发布于 2005-11-30 20:17:00
再有个问题就是假如表B就两条记录,是0的出库数量不在表中,又该如何写?上面的查询?
表A入库情况
产品代码 产品名称 入库数量
1001 aaa 10
1002 bbb 3
1003 ccc 5
1001 aaa 6
表B出库情况
产品代码 产品名称 出库数量
1001 aaa 5
1002 bbb 1
c表显示查询结果:
产品代码 产品名称 入库数量 出库数量 库存
1001 aaa 16 5 11
1002 ................................
1003 ccc 6 null 6
4 楼
cwb1128 [专家分:3120] 发布于 2005-12-01 08:09:00
c,d是子查询的别名!a,b是表的别名!
select c.产品代码,c.产品名称,c.入库数量 ,d.出库数量,(c.入库数量-isnull(d.出库数量,0)) as 出库数量 from
(select a.产品代码,a.产品名称,sum(a.入库数量) 入库数量 from A a group by a.产品代码,a.产品名称
) c left join
(
select b.产品代码,b.产品名称 ,sum(b.出库数量) 出库数量 from B b group by b.产品代码,b.产品名称
) d
on c.产品代码=d.产品代码
5 楼
marcos [专家分:30] 发布于 2005-12-07 21:50:00
没有INNER JOIN 这样行吗,两个不同的TABLE[em3]
我来回复