2016-10-26 62 views
-2

我有一个临时表。更改列名选择

col_1 col_2 col_3 col_4 
ABC  B01  10  5 
ABC  B01  77  5 
ABC  B03  30  7 
ABC  B05  50  11 
ABC  B05  88  11 
DEF  B05  50  50 
DEF  B05  88  50 
DEF  B06  66  50 
A01  B02  20  0 
A01  B04  40  0 
A02  B02  99  0 

和这个辅助表:

ID1  ID2 
ABC  A01 
DEF  A02 

我想怎么办。如果临时表中col_1中的值与辅助表中的ID2匹配,则值将在辅助表中更改为ID1。如何在select上做到这一点?

所以,当我做一个选择(SELECT * FROM temporary)。这是结果:

col_1 col_2 col_3 col_4 
ABC  B01  10  5 
ABC  B01  77  5 
ABC  B03  30  7 
ABC  B05  50  11 
ABC  B05  88  11 
DEF  B05  50  50 
DEF  B05  88  50 
DEF  B06  66  50 
ABC  B02  20  0 
ABC  B04  40  0 
DEF  B02  99  0 

有没有可能这样做?感谢您的帮助

注:

有在助手表中的很多价值观。不只是两排。

回答

0

左移情况下

select case 
       when h.id2 = tt.col_1 then h.id1 
       else tt.col_1 
      end as col_1, 
      col_2,col_3,col_4 
from temporary_table tt 
left join helper h on tt.col_1 = h.id2 
+0

加入不仅有在助手表两个值。有了真实的数据,大约有500个值。 – Vahn

+0

但只有2列是正确的? –

+0

谢谢P.Salmon。我已经将它实现到了我的真实数据中,并且它的作用就像一个魅力:D – Vahn