2

我想计算仓库中的物品并计算仓库中的可用空间,然后输出到带有 Inshelf 和 free 列的表中,我想出了类似的东西。

SELECT COUNT(*) as Inshelf, free=10-Inshelf
  FROM stock.stockproduct 
 WHERE StockNum = 1
   AND checkOutData is NULL;

似乎它不起作用,对于这种问题有什么简单的解决方案吗?

4

2 回答 2

3

这是行不通的 - 聚合函数的结果(例如count())在考虑完所有记录之后才可用。您需要使用子查询,在子查询中进行计数,在外部进行减法。在不知道您的数据库架构的情况下,这充其量只是一个猜测,但是......

SELECT InShelf, free - InShelf
FROM (
    SELECT count(*) AS Inshelf, free
    FROM stockproduct
    WHERE StockNum = 1 AND checkOutData IS NULL
    GROUP BY somefield
) AS a
于 2012-09-22T16:33:16.953 回答
0

工作 !!

SELECT InShelf, 10 - InShelf
FROM (
    SELECT count(*) AS Inshelf, count(*) AS free
    FROM stock.stockproduct
    WHERE StockNum = 1 AND checkOutData IS NULL

) AS a;

谢谢大家,对不起,我很愚蠢=.='

于 2012-09-22T17:14:21.103 回答