这里有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语句

解决方案 »

  1.   

    不是跟这个类似吗http://bbs.csdn.net/topics/390374393
      

  2.   

    就是那个,刚才没有解决,所有在这里发布详细的简介。有个问题请教 Zhang7613022
    SELECT A.商品编号,A.商品名称 as 商品名称,A.商品货号 as 商品货号,B.进货量 AS 进货总量,C.退货量 AS 退货总量,D.销售量 AS 销售总量,A.数量 as 现库存量,B.供货商
    FROM 库存 A
    Join (select 商品编号,sum(数量) as 进货量,供货商,类型 from 进货退货 group by 商品编号,供货商,类型) B ON B.商品编号=A.商品编号 AND B.类型='进货单'
    Join (select 商品编号,SUM(减少) AS 销售量 from 汇总单 group by 商品编号) D On B.商品编号=D.商品编号
    Join (select 商品编号,sum(数量) as 退货量,类型 from 进货退货 group by 商品编号,类型) C ON C.商品编号=A.商品编号 AND C.类型='进货退货单'
    这语句给修改一下,闲着的语句是,比如没有退货量或销售量的记录就不显示了,要求是显示所有库存记录,显示对应的进货或退货或销售,如果没有退货或销售,记录也要显示,列显示为空值或0该如何写?谢谢!
      

  3.   

     Join 改成 Left Join ,然后在数量那里 加上一个判断 isnull(数量,0) as 数量 这样就行了。
      

  4.   

    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.类型='进货退货单'
      

  5.   

    谢谢 Zhang7613022 ,先试一下。