2013-02-20 52 views
1

我有2個代碼,我遇到了麻煩。我看了一些其他的答案,但完全困惑。下面是SQL代碼。(它的一個訪問,SQL直通查詢)更新查詢使用總和

UPDATE TOP (500) InventorySuppliers 
SET    BoydQuantityAvailable = SUM(Boyd0004Daily.QOH), Cost = Boyd0004Daily.Cost 
FROM   Boyd0004Daily INNER JOIN 
         InventorySuppliers ON Boyd0004Daily.LocalSKU = InventorySuppliers.LocalSKU 
WHERE  (InventorySuppliers.SupplierID = 4) AND (NOT (InventorySuppliers.BoydQuantityAvailable = SUM(Boyd0004Daily.QOH))) OR 
         (InventorySuppliers.SupplierID = 4) AND (NOT (InventorySuppliers.Cost = Boyd0004Daily.Cost)) 

它不喜歡的SUM(Boyd0004Daily.QOH)的更新,但對我的生活,我還沒有能圖瞭解如何重寫它,以便進行選擇,然後使用1個查詢進行更新。

+1

你得到了什麼錯誤? 「Boyd0004Daily.QOH」中是否有非數字值? – 2013-02-20 19:03:23

回答

0

你想要做的就是選擇的第一件事出來的權利:

select * 
from InventorySuppliers i 
inner join (select LocalSKU, SUM(QOH) QOH_SUM, MAX(Cost) Cost --max or min 
      from Boyd0004Daily 
      group by LocalSKU) a 
     on a.LocalSKU = i.LocalSKU 
where i.SupplierID = 4 
and ((i.BoydQuantityAvailable != a.QOH_SUM)) 
    OR i.Cost != a.Cost)) 

然後將您的選擇更新:

update i 
set i.BoydQuantityAvailable = a.QOH_SUM, 
    i.Cost = a.Cost 
from InventorySuppliers i 
inner join (select LocalSKU, SUM(QOH) QOH_SUM, MAX(Cost) Cost --max or min 
      from Boyd0004Daily 
      group by LocalSKU) a 
     on a.LocalSKU = i.LocalSKU 
where i.SupplierID = 4 
    and ((i.BoydQuantityAvailable != a.QOH_SUM)) 
     OR i.Cost != a.Cost)) 

我覺得這個查詢應該爲你工作。我可能有錯誤,因爲我無法測試您的數據。

+0

我很快就會知道它是否有效,但我不得不修改它以刪除額外的支架。更新我 組i.BoydQuantityAvailable = a.QOH_SUM, i.Cost = a.Cost 從InventorySuppliers我 內部聯接(選擇LocalSKU,SUM(QOH)QOH_SUM,MAX(成本)成本--max或從Boyd0004Daily閔 組由LocalSKU)上a.LocalSKU = i.LocalSKU 其中i.SupplierID = 4 和((i.BoydQuantityAvailable!= a.QOH_SUM) OR i.Cost!= a.Cost) – 2013-02-20 19:52:54

+0

我想一個 感謝您的幫助。工作太棒了。 – 2013-02-21 08:03:57

1

您錯過了group by。任何時候使用聚合函數時,都必須包含一個包含所有未被聚合的列的組。

您在WHERE條款中也使用SUM,該條款不起作用。如果您想根據彙總過濾結果,則必須改用HAVING

+0

是的,我意識到問題是在WHERE子句中使用SUM,但對於我的生活,我無法弄清楚如何避開它。 – 2013-02-20 19:18:28

+0

添加'group by'並使用'having'代替... – 2013-02-20 19:18:46

+0

As對於小組來說,我需要通過boyd0004Daily進行分組。本地SKU – 2013-02-20 19:19:32