我有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
答案 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