2017-02-03 5 views
0

SQLサーバデータベースでtable1の値をtable2に更新したいのですが、私は2つのテーブルpay_tblとbill_tblを持っています。これらの2つの属性は次のとおりです。先月の他のテーブルの値を計算してテーブルを更新する

私はtable2の

(outstanding_payment+=amount_to_pay) 

のamount_to_pay列の値を追加することにより、pay_tblのoutstanding_amount列を更新するが、ちょうど法案のステータスが「有料ない」と日付が先月でいる場合、それらを更新したい

pay_tbl 
    pay_ID type int -->pk 
    outstanding_amount type int 

bill_tbl 
    pay_ID type int --> Fk 
    amount_to_Pay type int 
    amount_paid type int 
    paid_date type date 
    bill_status type varchar 

すなわち、今月は2月であり、日付がJanuraryであるテーブルを更新するだけです。私は次のクエリを試してみましたが、私はそれが

UPDATE pay_tbl 
SET 
    outstanding_payment = outstanding_Payment + 
          (SELECT 
           amount_to_pay 
          FROM bill_tbl INNER JOIN bill_tbl ON 
           bill_tbl.pay_ID = pay_tbl.payID) 
WHERE 
    MONTH(Date) = DATEPART(MONTH, DATEADD(MONTH, -1, [Date])) 
    AND YEAR(Date) = DATEPART(YEAR, DATEADD(MONTH, -1, [Date])) 
間違っている知っている
+0

コメントしているではない拡張された議論のため。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/134862/discussion-on-question-by-mjunaid-update-table-by-calculating-values-from-other)。 –

答えて

0
 UPDATE 
    TABLE_A 
SET 
    TABLE_A.OUTSTANDING_PAYMENT = TABLE_A.OUTSTANDING_PAYMENT+TABLE_B.AMOUNT_TO_PAY 

FROM 
    PAY_TBL AS TABLE_A 
    INNER JOIN (SELECT SUM(AMOUNT_TO_PAY) AMOUNT_TO_PAY ,PAY_ID FROM BILL_TBL WHERE MONTH(DATE) = DATEPART(MONTH, DATEADD(MONTH, -1, [DATE])) 
AND YEAR(DATE) = DATEPART(YEAR, DATEADD(MONTH, -1, [DATE])) 
AND BILL_STATUS='NO PAID' 
GROUP BY PAY_ID) AS TABLE_B 
     ON TABLE_A.PAY_ID = TABLE_B.PAY_ID 
関連する問題