如何在SQL服务器中编写存储的Proc从表中输入一列并返回同一列和标志列

时间:2015-07-24 15:08:06

标签: sql sql-server sql-server-2008

我的要求是从表中传递phonenumbers列表,我需要的输出是获取phonenumber列和IsMobile列。

我的proc逻辑应该是:当我将phonenumber列传递给存储过程时,它应该检查具有列table B的其他MobileNumbers(其中包含移动号码数据库) 。

如果传递的phonenumbertable B中的列表匹配,那么我需要标记Ismobile'1',如果传递的电话号码不在{{1}然后table B

这是源表示例

enter image description here

现在我有另一张表B(手机号码列表)

enter image description here

当我将源表'0'列作为输入传递并在phoneNumber中找到任何匹配项时,我需要标记为1。

这是我希望我的存储过程的返回值必须是

enter image description here

请帮我处理存储过程

提前致谢。

1 个答案:

答案 0 :(得分:2)

这是一种方法:

select s.*,
       (case when exists (select 1 from mobiles m where s.phonenumber = m.mobilenumber)
             then 1 else 0 end) as HasMobile
from source s;

在我看来,没有理由将其作为存储过程。如果要使用名称封装此逻辑,则可以创建视图或内联表函数。