更新列以包含从另一个

时间:2018-04-19 08:38:33

标签: sql advantage-database-server

我有一个情况,我在哪里有一个表(tbl1),并为此添加了一个列,该列当前都为null。我想使用更新语句来填充此列,其中包含连接在一起的3个其他列的值。这些其他列中的1列可以正常使用,但是其他两列具有需要与另一个表(tbl2)连接以根据tbl2下面的表样本查找单个字符关联代码的值。来自tbl2的CostType和RefType存在于tbl1中,但我想将CostCode和RefCode带到tbl1的空列。我还展示了我尝试使用Advantage SQL Architect的内容。但是看不到让它发挥作用。

update tbl1
set emptycolumn=tbl.column1+tbl2.costcode+tbl2.refcode
from tbl1 left join tbl2 on (tbl1.costtype=tbl2.costtype)
          left join tbl2 on (tbl1.reftype=tbl2.reftype)

CostCode    CostType          RefCode   RefType
A            Apportioned Cost   E      EmployeeID
J            Funding Adjustment I      Invoice
G            Grant              G      Grant Recipient
M            Grant Management   L      LearnRefNumber
O            Other Costs        N      CompanyName
E            Staff Expenses     O      Other
F            Staff Full Time    C      Authorised Claims
P            Staff Part Time    A      Audit Adjustment
U            Unit Cost      
D            Unit Cost Deduction        
S            Start Payment      
C            Completion Payment     

1 个答案:

答案 0 :(得分:0)

我相信你的语法还可以,所以我猜测值仍为NULL。如果是这样,您可能只需要coalesce()

update tbl1
     set emptycolumn = (coalesce(tbl.column1, 0) + -- not sure if it starts as NULL
                        coalesce(tbl2.costcode, 0) +
                        coalesce(tbl2.refcode, 0)
                       )
from tbl1 left join
     tbl2
     on tbl1.costtype = tbl2.costtype left join
     tbl2
     on tbl1.reftype = tbl2.reftype;

如果您打算使用字符串连接,请使用''而不是0