联合查询: 为何表中为负的数没有被计算?
谢谢版主提供的联合查询问题解决办法.
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.[产品编号],产品表.产品名称
这个查询没有问题,只要在销售表中的数据,不论是正常销售,还是销售退货,都可以统计到。
只不过,正常销售减少库存数量,销售退货增加库存数量。