Как установить значение, основанное на существовании значения в SQL Server? - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть следующий код 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.

1 Ответ

1 голос
/ 14 апреля 2019

Вы можете использовать агрегацию:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...