0

我在为表创建查询时遇到问题

mouventDeStock

|| idMv || dateMv ||qteMv || typeMV(bit) || codeMv ||

如果 0 表示缺货,则字段类型为 0 或 1,如果 1 表示输入库存

我想计算 qte 女巫等于

qte = ( sum(qteMv) where typeMv = 1 )  - ( sum(qteMv) where typeMv = 0 ) 

我怎么不能在sql中做到这一点

(select sum(mvQte) from mouvementDeStock 
 where (mvType = 1 and mvCode = 'ART_18'))
 -
 (select sum(mvQte) from mouvementDeStock 
 where (mvType = 0 and mvCode = 'ART_18')

但它根本不起作用

4

2 回答 2

1

尝试这个...

Select Y.S - X.S As Sum from
(select sum(qteMv) S from mouventDeStock where typemv=1 and codemv = 'ART_18') Y,
(select sum(qteMv) S from mouventDeStock where typemv=0 and codemv = 'ART_18') X;
于 2013-10-13T07:40:43.977 回答
0

您可以使用子查询来计算小计,但您的整个语句必须是有效的 SQL 语句,因此您需要SELECT在它们周围包装另一个:

SELECT (SELECT SUM(mvQte) FROM mouvementDeStock 
        WHERE mvType = 1 AND mvCode = 'ART_18')
       -
       (SELECT SUM(mvQte) FROM mouvementDeStock
        WHERE mvType = 0 AND mvCode = 'ART_18')

如果你想聪明一点,你可以用一个总和来做到这一点,通过将所有缺货mvQte值乘以 -1 来使它们变为负数:

SELECT SUM(mvQte * CASE mvType WHEN 0 THEN -1 ELSE 1 END)
FROM mouvementDeStock
WHERE mvCode = 'ART_18'

CASE 表达式文档

于 2013-10-13T08:39:15.583 回答