Обновление столбца для включения значений, полученных из другого

У меня есть ситуация, когда у меня есть таблица (tbl1), и я добавил к ней столбец, который в настоящее время является нулевым. Я хочу использовать оператор обновления, чтобы заполнить этот столбец значениями 3 других столбцов, соединенных вместе. 1 из этих других столбцов подходит для использования, но два других имеют значения, которые требуют объединения с другой таблицей (tbl2) для поиска кода, связанного с одним символом, согласно приведенному ниже примеру таблицы из таблицы tbl2. CostType и RefType из tbl2 существуют в 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 ответ

Решение

Я считаю, что ваш синтаксис в порядке, так что я думаю, значение остается 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,

Другие вопросы по тегам