表DepotList:进出库列表DepotType 0进库,1出库
进出库标志,类别,编码,数量, 单价
DepotType,Class, GoodsNo,Number,Price
0        ,Class1, 1001  ,5     ,10.00
0        ,Class1, 1001  ,8     ,12.00
1  ,class1, 1001  ,3     ,20 
0,  ,class2, 2001  ,10    ,15还有一表GoodsInfo通过GoodsNo与List表关联
GoodsNo,UNIT
1001 个
2001 套1、通过类别查询:Class1,class2,全部类别查库查结果应该为
Class, GoodsNo,Number,总金额,UNIT
Class1, 1001  ,10     ,86   ,个
class2, 2001  ,10     ,150  ,套2、通过GoodsNo查询:GoodsNo = 1001,查询结果应为
Class, GoodsNo,Number,总金额,UNIT
Class1, 1001  ,10     ,86    ,个

解决方案 »

  1.   

    1、select class,goodsno,number,price as 总金额,unit from depotlist,goodsinfo where depotlist.goodsno = goodsinfo.goodsno2、select class,goodsno,number,price as 总金额,unit from depotlist,goodsinfo where depotlist.goodsno = goodsinfo.goodsno and goodsinfo.goodsno ='1001'
      

  2.   

    select * from GoodsInfo where  GoodsNO in (select Goodsno from Depotlist where class = '??') union select * from Depotlist
      

  3.   

    1、select class,sum(number*(case depottype when 0 then 1 else (-1) end)) as number,
    sum(price*(case depottype when 0 then 1 else (-1) end)) as 总金额,unit from depotlist,goodsinfo 
    where depotlist.goodsno = goodsinfo.goodsno
    group by class,unit
    第二个和第一个只是多了个and,自己处理一下吧,我感觉有了unit就不需要goodsno了,所以没给你家上,如果需要自己加上就行了,由于跨表,最后group的时候是不是需要加上unit我也不记得了,自己测试一下就行了。
      

  4.   

    借助临时表
    方法 
    1。DepotType是0的分组汇总后放入临时表1 ,DepotType为1的分组汇总后放入临时表2。
    2。通过class的条件执行相减操作。
    不过觉得使用视图的话会简单一点。
      

  5.   

    其实,我推荐你改一下数据结构的属性标志,DepotType 1进库,-1出库,这样就不需要临时表了
      

  6.   

    nhdj(柳柳荷叶清清水)其实,我推荐你改一下数据结构的属性标志,DepotType 1进库,-1出库,这样就不需要临时表了怎么讲,我可以改的:)
    老兄,帮我推荐2点关于SQL的书吧,我从没做个这个东西:)
    再次谢谢你,还有问题要向你请教:)