在SQL中设置指标根据WHERE Exist选择Statment

时间:2017-02-10 14:04:33

标签: sql stored-procedures

我有3张桌子:

表1
表2
表3

我想创建一个存储过程,该过程在Select语句中返回一个指示符,该指示符的值是根据Table2和Table3之间的匹配/不匹配来设置的。指标不是查询中使用的3个表中任何一个的现有列。

如何实现这一目标?

例如:

Select
,tb1.Name
,tb2.Address 
,Indicator
From Table1 tb1
 join Table2 tb2
    on tb1.Id = tb2.Id
Where Exist (if tb2.Id = Table3.Id then set Indicator = 'Match' else = 'NoMatch')


Table 1     Id          Name
            1           John
            2           Bob

Table 2     Id          Address        PolicyNumber
            1           105 main st    1234567890 
            2           115 south ave  5555555555 

Table 3     PolicyNumber
            1234567890 
            9999999999

预期结果集:

John,105 main st,Match     
Bob,115 south ave,NoMatch

1 个答案:

答案 0 :(得分:1)

使用CASE声明,而不是SELECT喜欢

case when tb2.Id = Table3.Id then 'Match' else 'NoMatch' end as Indicator

您的查询看起来像

Select tb1.Name
,tb2.Address 
,case when tb2.Id = Table3.Id then 'Match' else 'NoMatch' end as Indicator
From Table1 tb1
 join Table2 tb2 on tb1.Id = tb2.Id
 join Table3 on tb2.Id = Table3.Id