日期:2014-05-16  浏览次数:20971 次

联合查询: 为何表中为负的数没有被计算?
谢谢版主提供的联合查询问题解决办法.

SELECT   T.[产品编号],   产品表.产品名称,sum(产品数量)   AS   剩余数量
FROM  
      (
        select   [产品编号],产品数量  
        from   入库表
        union   all
        select   [产品编号],销售数量   *   (-1)   as   数量
        from   销售表
    )   AS   T
inner   join   产品表     on   T.产品编号=产品表.产品编号
GROUP   BY   T.[产品编号],产品表.产品名称

遇到一个新的问题:
在销售表中,   有一些负数没有被计算进去.出现负数的原因是退货,   所有销售出现了负数,   但用以上的联合查询,   却没有把销售为负的数算进去,   所以出来的数是:

剩余数量=入库数量-销售数量(但不包括退货的产品)

因此这样得到的剩余数量比实际的要少.  

问题可能出来哪里?   在表里?   还是在查询的过程中?

如果直接在 "销售表 "的基础上出 "销售报表 "时,是可以看到那些为负的销售的.

谢谢帮助!


------解决方案--------------------
SELECT T.[产品编号], 产品表.产品名称,sum(产品数量) AS 剩余数量
FROM
(
select [产品编号],产品数量
from 入库表
union all
select [产品编号],销售数量 * (-1) as 数量
from 销售表
) AS T
inner join 产品表 on T.产品编号=产品表.产品编号
GROUP BY T.[产品编号],产品表.产品名称

这个查询没有问题,只要在销售表中的数据,不论是正常销售,还是销售退货,都可以统计到。

只不过,正常销售减少库存数量,销售退货增加库存数量。