从左表中获取计算列值的所有记录

时间:2016-10-05 16:21:03

标签: sql

我有结构表的主表:

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是外来的,表格为T1,ID列。我希望得到'180'的Somenumber值的结果集,如

输出:

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

我尝试过使用Left-Joins,Case Statements但没有得到预期的结果。

1 个答案:

答案 0 :(得分: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;

实际上,假设每个id最多出现180行一次(如示例数据中所示)。如果此类行可能多次出现,请使用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;