【发布时间】:2016-01-20 20:32:38
【问题描述】:
我有一个 sql server 2008 表,比如说“alpha”,有三列。它们是 [ID]、[col1] 和 [col2]。
id|col1|col2
1 |X |john1X|
1 |Y |john1Y|
1 |Z |john1Z|
2 |X |john2|
3 |Y |john3|
4 |X |john4|
每个 ID 可能有多个条目。如果 col1 包含“X”,我希望显示该行。如果 col1 中没有带有“X”的 ID,我希望选择“Y”。否则该行根本不应该出现。
对于上述示例数据,预期输出将低于。
id|col1|col2
1 |X |john1X|
2 |X |john2|
3 |Y |john3|
4 |X |john4|
我一直在努力让这段代码工作,
select * from alpha
where col1 = case
when exists(select * from alpha where col1 = 'X') then 'X'
else 'Y'
end
但是无论我如何重写代码,我都会得到以下输出。
id|col1|col2
1 |X |john1X
2 |X |john2
4 |X |john4
【问题讨论】:
-
将 id 也传递给您的子查询
标签: sql sql-server sql-server-2008 case exists