修改語句:
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