我需要在查询中添加一个包含值的列。一个简化的例子:
exampleTable:
ID Fruit
+-----+---------+
| 0 | Apple |
+-----+---------+
| 1 | Pear |
+-----+---------+
我想要一个添加以下硬编码列名+值的查询:
ID Fruit MyFavorite
+-----+---------+-------------+
| 0 | Apple | YES |
+-----+---------+-------------+
| 1 | Pear | NO |
+-----+---------+-------------+
要非常明确:我不想要任何新表,只需要提供此结果的查询。
如何实现这一结果?
编辑:这只是假表的一个例子。我不想要更多表,我不想要更改现有表格,MyFavorite
中的值应该是硬编码。
答案 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