聚合不應出現在 UPDATE 語句的集合列表中


修改語句:

update A set WZCount=ISNULL(WZCount,0)+(select SUM(WZCount) from T_PM_OutStock_SUB where MaterialID =A.MaterialID and _MainID='{_AutoID}') from T_PM_MaterialStock A,T_PM_OutStock_SUB

系統報錯:

聚合不應出現在 UPDATE 語句的集合列表中

問題:

修改語句中不能出現聚合函數這一類的

解決問題:

那就把聚合函數放到select 查詢與查出來當成一個數據表   再用數據表和原先的數據表匹配 進行添加

修改之后;

UPDATE T_PM_MaterialStock
SET WZCount = WZCount+TB.ALLCount
FROM (SELECT
b.MaterialID,SUM(b.Count) AS ALLCount
FROM
T_PM_MaterialStock a
INNER JOIN
T_PM_OutStock_SUB b
ON a.MaterialID = b.MaterialID
WHERE b._MainID='{_AutoID}'
GROUP BY
b.MaterialID
) AS TB
WHERE
T_PM_MaterialStock.MaterialID = TB.MaterialID

正常示例:

UPDATE    庫存表2
SET 庫存數量 = TB.剩余數量
FROM (SELECT
入庫表.條形碼,SUM(入庫表.剩余數量) AS 剩余數量
FROM
庫存表2
INNER JOIN
入庫表
ON 庫存表2.條形碼 = 入庫表.條形碼
GROUP BY
入庫表.條形碼
) AS TB
WHERE
庫存表2.條形碼 = TB.條形碼
另外一個語句寫的例子:

UPDATE T_PM_MaterialEntry_SUB
SET Surplus = ISNULL(Surplus,0)+TB.ALLCount
FROM (SELECT
b.SourceNumID,SUM(b.Count) AS ALLCount
FROM
T_PM_MaterialEntry_SUB a
INNER JOIN
T_PM_OutStock_SUB b
ON a._AutoID = b.SourceNumID
WHERE b._MainID='{_AutoID}'
GROUP BY
b.SourceNumID
) AS TB
WHERE
T_PM_MaterialEntry_SUB._AutoID = TB.SourceNumID


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM