通过从另一个表获取数据来更新列

时间:2019-01-17 20:59:35

标签: sql sql-server sql-server-2012

我下面有一张桌子

Code APAC APACRatio EMEA EMEARatio
SL   2               4
PQ   5               5

我还有一张桌子

Code Count
SL    3
PQ    4

我必须根据代码更新第一个表,这样我才能得到以下结果

Code APAC APACRatio EMEA EMEARatio
 SL   2     2/3       4   4/3
 PQ   5     5/4       10  10/4

所以我想通过加入代码然后更新它来计算比率。我可以逐列手动进行操作,但不确定是否可以动态地进行操作。

1 个答案:

答案 0 :(得分:2)

直接与部门合并

select 
t1.Code
,t1.[APAC APACRatio] / t2.[Count]
,t1.[EMA EMEARatio] / t2.[Count]
from table 1 t1
inner join table2 t2 on t1.Code = t2.Code

或者,也许是串联的?

select 
t1.Code
,concat(t1.[APAC APACRatio],'/',t2.[Count])
,concat(t1.[EMA EMEARatio],'/',t2.[Count])
from table 1 t1
inner join table2 t2 on t1.Code = t2.Code

因此

update t1
    set 
     t1.[APAC APACRatio] =  concat(t1.[APAC APACRatio],'/',t2.[Count])
    ,t1.[EMA EMEARatio] = concat(t1.[EMA EMEARatio],'/',t2.[Count])
    from table1 t1
    inner join table2 t2 on t1.Code = t2.Code