2016-09-06 2 views
1

を更新:SQLの計算及び列方向

BEGIN 
Update Materials 
SET  used_last= 
(  
    Select 
      SUM(Amount*used_last) 
    FROM Used_Materials, 
      Materials, 
      PCNs 
    WHERE [email protected] 
      AND Used_Materials.Material_NR=Materials.Material_NR 
      AND [email protected] 
) 
FROM Materials, 
     PCNs 
WHERE [email protected] 
     AND [email protected] 
END 

この手順は、各材料(MATNR)のために呼び出されることがあります。一度にすべての出品者に対してこの操作を実行することは可能ですか?私はCURSORとMAX Caseを遭遇しましたが、私はその周りに頭を上げることができません。

ご協力いただければ幸いです。

+0

? – mabi

答えて

1

Hmmm。 。 。 JOINキーワードを使用する方法とすべての列名を修飾する方法を学ぶ必要があります。単純なルール:は、FROM句のカンマを使用します。 常には、明示的なJOIN構文を使用します。

私は、これはあなたが望むクエリだと思う:あなたがいない `JOIN`元テーブルを行うと、あなたはとにかくすべてのエントリを更新したいので、ちょうど、` WHERE`句を残して、何らかの理由

UPDATE m 
    SET used_last = (SELECT SUM(Amount) * used_last 
        FROM Used_Materials um 
        WHERE um.Material_NR = m.Material_NR 
        ) 
    FROM Materials m JOIN 
     PCNs 
     ON m.Material_NR = PCNs.Material_NR; 
+0

助けていただきありがとうございますが、Followigエラーが発生します。複数の列が、外部参照を含む集約式で指定されています。集約される式に外部参照が含まれている場合、その外部参照は式で参照される唯一の列でなければなりません。 AmountはMaterialsの列で、used_lastはUsedMaterialsの列です – Gremmbol

+0

私はそれを理解しました:SUM(Amount)* used_last – Gremmbol

関連する問題