如何根据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。如果不是,10,取决于是否存在任何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

SQL Server 根据字段的值触发插入和/或更新的记录

在 SQL Server XML 列中,如何验证相同的值是不是存在于多行中

SQL server 2005如何设置一个或几个字段唯一约束?

SQL Server merge用法

如何使用 SQL Server 中的日期时间数据设置日期时间本地输入值?