如何设置行值是'否'如果在SQL表中找不到值?

时间:2017-04-10 08:46:35

标签: sql-server-2012

我有一个名为person的表名。

E.g:

  Name       Address
-------------------------------------
  a          India
  b           US
  c           UK

我想检查特定名称是否存在。如果不存在,我想表示为“不”,

E.g:

我在下面尝试查询以获得结果。但是' D' D'找不到桌子。所以,我得到的值是空的。

select Name, case when Name in ('a','d','e') Then 'Yes' Else 'No' END As Status from person


     Name       Status
 ------------------------------
      a           Yes

我需要输出如下格式:

  Name       Status
-------------------------------------
  a           Yes
  b           Yes
  c           Yes
  d           No
  e           No
你能帮我吗?如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

请使用以下代码:

    DECLARE @Table TABLE (Name NVARCHAR(20), Country NVARCHAR(20))
    INSERT INTO @Table VALUES
    ('a','India'),
    ('b','US'),
    ('c','UK')

创建一个表变量来存储您需要检查的名称字段:

    DECLARE @Temp TABLE (Name NVARCHAR(20))
    INSERT INTO @Temp VALUES
    ('a'),
    ('d'),
    ('e')

    SELECT 
    CASE WHEN T.Name IS NULL THEN TE.Name ELSE T.Name END AS Name, 
    CASE WHEN T.Name IS NULL THEN 'NO' ELSE 'YES' END AS Staus
    FROM @Table T FULL JOIN @Temp TE
    ON T.Name =TE.Name

输出:

  Name  Staus
   a    YES
   b    YES
   c    YES
   d    NO
   e    NO