我希望計算倉庫中的物品並計算倉庫中的空閒空間,然後輸出到列爲Inshelf並且空閒的表格,然後我想出類似這樣的東西。在SQL count()值上進行計算
SELECT COUNT(*) as Inshelf, free=10-Inshelf
FROM stock.stockproduct
WHERE StockNum = 1
AND checkOutData is NULL;
看來它不會工作,有沒有這種問題的任何簡單的解決方案?
我希望計算倉庫中的物品並計算倉庫中的空閒空間,然後輸出到列爲Inshelf並且空閒的表格,然後我想出類似這樣的東西。在SQL count()值上進行計算
SELECT COUNT(*) as Inshelf, free=10-Inshelf
FROM stock.stockproduct
WHERE StockNum = 1
AND checkOutData is NULL;
看來它不會工作,有沒有這種問題的任何簡單的解決方案?
這是行不通的 - 聚合函數的結果(例如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
未知領域列表中的'free' – Samuel
@ user1660416:看看你在你的問題中寫了些什麼,以及Marc在他的回答中寫了什麼,然後用你的頭來弄清楚現場列表中有什麼「免費」並修復它。你應該學會嘗試實際閱讀和理解事物,而不是複製和粘貼它們。 Marc,+1。很好的答案。 –
工作!
SELECT InShelf, 10 - InShelf
FROM (
SELECT count(*) AS Inshelf, count(*) AS free
FROM stock.stockproduct
WHERE StockNum = 1 AND checkOutData IS NULL
) AS a;
感謝,併爲愚蠢= SRY。=」
請包括架構。 –
您是否可以包含一些用於測試的數據,表格結構並指定您正在使用的RDBMS,MS SQL Server,MySQL,Oracle。 – Yaroslav
我正在使用MySQL – Samuel