如何根据SQL Server中的值存在来设置值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据SQL Server中的值存在来设置值?相关的知识,希望对你有一定的参考价值。
我有以下T-SQL代码:
select
id,
(case
when n in(Bla1', 'Bla2') then 1
when n = 'Bla3' then 99
else 0
end) as c
from
hello
运行此代码会输出以下结果:
| id | c |
+--------+----+
| 577140 | 0 |
| 577140 | 1 |
| 577140 | 0 |
| 577140 | 0 |
| 577140 | 99 |
| 577141 | 0 |
| 577141 | 0 |
| 577141 | 0 |
| 577142 | 0 |
| 577142 | 0 |
| 577142 | 1 |
如何修改代码以获得以下输出?
| id | c |
+--------+----+
| 577140 | 99 |
| 577141 | 0 |
| 577142 | 1 |
规则
对于每个id
:如果99
存在,那么c
变成99
。如果不是,1
或0
,取决于是否存在任何1
。
答案
您可以使用聚合:
select id,
max(case when n in ('Bla1', 'Bla2') then 1
when n = 'Bla3' then 99
else 0
end) as c
from hello
group by id;
以上是关于如何根据SQL Server中的值存在来设置值?的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server XML 列中,如何验证相同的值是不是存在于多行中