在查询中添加包含值的列

时间:2015-06-16 13:50:43

标签: sql sql-server select

我需要在查询中添加一个包含值的列。一个简化的例子:

exampleTable:

  ID     Fruit
+-----+---------+
|  0  |  Apple  |
+-----+---------+
|  1  |  Pear   |
+-----+---------+

我想要一个添加以下硬编码列名+值的查询:

  ID     Fruit     MyFavorite
+-----+---------+-------------+
|  0  |  Apple  |      YES    |
+-----+---------+-------------+
|  1  |  Pear   |      NO     |
+-----+---------+-------------+

要非常明确:我不想要任何新表,只需要提供此结果的查询。

如何实现这一结果?

编辑:这只是假表的一个例子。我想要更多表,我想要更改现有表格,MyFavorite中的值应该是硬编码。

5 个答案:

答案 0 :(得分:5)

如果您只是想要查询而不想更改表结构:

select ID
    ,Fruit
    , CASE WHEN Fruit = 'Apple' THEN 'YES' ELSE 'NO' END as MyFavorite
from Fruits

答案 1 :(得分:5)

您可以使用case表达式:

SELECT id
     , fruit
     , CASE fruit 
         WHEN 'Apple' THEN 'YES' 
         ELSE 'NO' 
       END AS MyFavorite
FROM   exampleTable

答案 2 :(得分:2)

您可以通过以下方式实现此目的:

SELECT yt.id, yt.fruit,
        CASE WHEN YOURLOGIC!
            THEN N'YES' -- if logic = true
            ELSE N'NO' -- if logic = false
        END as MyFavorite
FROM dbo.YourTable as yt

但是你需要定义你的逻辑,让sql server判断是或否。

答案 3 :(得分:2)

由于表格永远不会改变而您想要对值进行硬编码,为什么要使用该表格?算了吧。以下是为您提供所需结果的查询:

select  0 as id, 'Apple' as fruit, 'YES' as myfavorite
union all
select  1 as id, 'Pear' as fruit, 'NO' as myfavorite;

(我没有看到硬编码值的重点,而不是简单地将它们放在一个表中,但是你去了。)

答案 4 :(得分:0)

分两步: 1。

 alter mytable add MyFavorite nvarchar(x)

2

  update mytable set=
    CASE when Fruit='Apple' then 'YES' 
    else 'NO' 
    END