2014-12-04 105 views
0

這兩個表都有一個client_id列。當client_id列相同時,需要將#LocalDashboardtable中的數據插入到T004_Dashboard中。我已經試過,但它簡化版,幫助顯示錯誤根據Id將行從一個表更新到另一個表

update T004_Dashboard set T004_Dashboard.[GrossCharge],T004_Dashboard.[NetCharge] 
= (select #LocalDashboardtable.[GrossCharge] , #LocalDashboardtable.[NetCharge] 
from #LocalDashboardtable where 
#LocalDashboardtable.client_id =T004_Dashboard.client_id and 
#LocalDashboardtable.[month] =T004_Dashboard.[month] 
and #LocalDashboardtable.[year] =T004_Dashboard.[year] ) 

請幫我

+1

您正在使用SQL Server的語法,但問題是標籤的MySQL合格的列名。你真的在使用哪個數據庫? – 2014-12-04 03:44:10

+0

我正在使用SQL Server2008 R2 – 2014-12-04 03:49:45

回答

1

這是您的查詢(這看起來很像SQL服務器)「附近有語法錯誤‘’。」:

update T004_Dashboard 
    set T004_Dashboard.[GrossCharge], 
     T004_Dashboard.[NetCharge] = (select #LocalDashboardtable.[GrossCharge], #LocalDashboardtable.[NetCharge] 
             from #LocalDashboardtable 
             where #LocalDashboardtable.client_id = T004_Dashboard.client_id and 
              #LocalDashboardtable.[month] = T004_Dashboard.[month] and 
              #LocalDashboardtable.[year] = T004_Dashboard.[year] 
            ); 

您無法將一對列設置爲子查詢中的一對列。相反,使用join

update T004_Dashboard 
    set GrossCharge = ld.GrossCharge, 
     NetCharge = ld.NetCharge 
    from T004_Dashboard d join 
     #LocalDashboardtable ld 
     on ld.[month] = d.[month] and ld.[year] = d.[year] and 
      ld.client_id = d.client_id; 

此外,SQL Server不允許在update/set聲明

相關問題