2016-10-05 31 views
0

我有主表与结构:获取从左表中的所有记录与计算列值

T1

ID Name 
1  Cricket 
2  Football 
3  Golf 

T2

ID T1-ID SomeNumber 
1  1  180 
2  2  180 
3  1  195 
4  3  195 

T1-ID是国外KET FOT表T1, ID列。我想要得到的值在结果集为Somenumber像'180'

输出:

ID Name  ComputedColumn 
1  Cricket  True 
2  Football True 
3  Golf  False 

我一直在使用左联接尝试,Case语句但没有得到预期的结果。

回答

2

您可以使用left join

select t1.*, 
     (case when t2.id is null then 'False' else 'True' end) as ComputedColumn 
from t1 left join 
    t2 
    on t1.id = t2.t1_id and t2.somenumber = 180; 

其实,这假设与180一排每个ID最多出现一次(在你的样本数据)。如果这样的行可能发生多次,请使用case

select t1.*, 
     (case when exists (select 1 from t2 where t1.id = t2.t1_id and t2.somenumber = 180) 
      then 'True' else 'False' 
     end) as ComputedColumn 
from t1;