以下为数据库字段:入库表:
编号 数量
001  1000
002  1000
001  2000出库表
编号    数量
001     100
001     200
002     300现想得出编号为001这样的结果:编号 共入库数量 共出库数量  还剩数量
001  3000          300       2700 
 
没什么分了,谢谢。。

解决方案 »

  1.   

    用嵌套SQL语句很简单。正在想着用一个什么样的简单的SQL语句来实现。
      

  2.   

    select 入库表.编号 , sum(入库表.数量) as 共入库数量, sum(出库表.数量) as 共出库数量,
    sum(入库表.数量) - sum(出库表.数量) as 还剩数量
    from 入库表
    left join 出库表 on 入库表.编号 = 出库表.编号
    where 入库表.编号 = '001'
      

  3.   

    leolan(史留香),你是CSDN数据库最活跃的一个人之一。奇怪,我的语句也是跟你一样,就是会出错,如果一种物料只有一条入库数据时就不会出错。
    如果多于两条时,以上的语句所显示入库数量,出库数量都是乘以2的。
    如001的型号共入库全部只有3000,它就会显示6000,共出库300它就会显示600。
    我晕了,这什么原因,大家都帮忙看下,好不?以下是我的SQL语句:
    select 入库表.编号 , sum(入库表.数量) as 共入库数量, sum(出库表.数量) as 共出库数量,
    sum(入库表.数量) - sum(出库表.数量) as 还剩数量
    from 入库表
    left join 出库表 on 入库表.编号 = 出库表.编号
    where 入库表.编号 = '001' group by 入库表.编号
      

  4.   

    這兩個表如果是多對多的關系的話,那可以先分別將兩個表按編號匯總,再與另外一個表連接,否則會連出多條記錄,例如按以上方法連接兩表,但不匯總的話結果會是這樣:编号 入库表数量 出库表数量001  1000       100
    001  1000       200
    001  2000       100
    001  2000       200很明顯匯總後的數量是錯誤的了。所以應該這樣:select A.编号, A.共入库数量, B.共出库数量, (A.共入库数量- ISNULL(B.共出库数量,0)) as 还剩数量
    from (
        select 入库表.编号 , sum(入库表.数量) as 共入库数量
        from 入库表
        where 入库表.编号 = '001'
    ) A
    left join (
        select 出库表.编号 , sum(出库表.数量) as 共出库数量
        from 出库表
        where 出库表.编号 = '001'
    ) on A.编号 = B.编号
      

  5.   

    按leolan的方法已搞定,原来是出入库表结构不一样的原因啊,再次谢谢了。。