首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL 写法 请问

2013-03-01 
SQL 写法 请教这里有3个表库存表商品编号商品名称商品货号数量100001A10001A018100002A10002A028100003A10

SQL 写法 请教
这里有3个表

库存表

商品编号   商品名称  商品货号  数量
100001     A10001    A01       8
100002     A10002    A02       8
100003     A10002    B01       5
100004     A10003    A07       10
100005     A10003    B06       5

库存表内商品编号没有重复的信息

进货退货表

商品编号   商品名称  商品货号  数量  供货商  类型
100001     A10001    A01       5     G1001   进货
100002     A10002    A02       5     G1001   进货
100003     A10002    B01       5     G1002   进货
100004     A10003    A07       5     G1002   进货
100005     A10003    B06       10    G1002   进货
100001     A10001    A01       5     G1005   进货
100002     A10002    A02       5     G1005   进货
100003     A10002    B01       5     G1005   进货
100004     A10003    A07       5     G1005   进货
100005     A10003    B06       5     G1005   退货

进货退货表有重复的商品编号

销售表

商品编号   商品名称  商品货号  数量
100001     A10001    A01       2
100002     A10002    A02       2
100003     A10002    B01       5


查询 进、退、销、存

SELECT="A.商品编号,A.商品名称,A.商品货号,A.数量,SUM(B.数量),SUM(C.数量),SUM(D.数量),E.供货商"
FROM 库存表 A,进货退货表 B,进货退货表 C,销售表 D,进货退货表 E
WHERE

B.商品编号=A.商品编号
C.商品编号=A.商品编号
D.商品编号=A.商品编号
E.商品编号=A.商品编号

group by
A.商品编号,A.商品名称,A.商品货号,A.数量,E.供货商

正确语句该如何写,请教大侠!

SQL语句
[解决办法]
不是跟这个类似吗

http://bbs.csdn.net/topics/390374393
[解决办法]
 Join 改成 Left Join ,然后在数量那里 加上一个判断 isnull(数量,0) as 数量 这样就行了。
[解决办法]
SELECT A.商品编号,A.商品名称 as 商品名称,A.商品货号 as 商品货号,B.进货量 AS 进货总量,isnull(C.退货量,0) AS 退货总量,isnull(D.销售量,0) AS 销售总量,A.数量 as 现库存量,B.供货商


FROM 库存 A
Join (select 商品编号,sum(数量) as 进货量,供货商,类型 from 进货退货 group by 商品编号,供货商,类型) B ON B.商品编号=A.商品编号 AND B.类型='进货单'
Left Join (select 商品编号,SUM(减少) AS 销售量 from 汇总单 group by 商品编号) D On B.商品编号=D.商品编号
Left Join (select 商品编号,sum(数量) as 退货量,类型 from 进货退货 group by 商品编号,类型) C ON C.商品编号=A.商品编号 AND C.类型='进货退货单'

热点排行