SQL Case用于检查字段是否在临时表中的语句

时间:2013-05-03 11:36:20

标签: sql sql-server-2012

如果这样的事情已经出现,请提前道歉,但我找不到它。

我已经声明了一个包含ID列表的临时表@x

在我的主查询中,我想检查特定记录ID是否出现在@x表中,然后分别返回'Yes''No'

我在声明时尝试了以下案例:

select (case when xsup_ID in @x then 'YES' else 'NO' end) as Ins

但是我在运行时遇到错误:

  

在上下文中指定的非布尔类型的表达式   条件是预期的

  

'@x'附近的语法不正确

是否可以使用上述声明,如果没有,那么解决此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

select (case when xsup_ID in (select id from @x) then 'YES' else 'NO' end) as Ins

即。你的IN应该测试一个列的子查询,而不是表变量本身。

答案 1 :(得分:0)

select (case when CHARINDEX(xsup_ID ,@x) > 0 then 'YES' else 'NO' end)