Создать флаги в группе SQL по переменной ID - PullRequest
0 голосов
/ 05 мая 2020

Если у меня есть таблица, подобная приведенной ниже, и я хочу, чтобы go через Var 1 - Var 3 проверяли наличие определенного шаблона и соответственно создавали флаги для каждого шаблона.

enter image description here

В идеале для создания таблицы, аналогичной приведенной ниже

enter image description here

Какой самый простой и быстрый способ сделать это на сервере SQL.

1 Ответ

2 голосов
/ 05 мая 2020

Вот один из методов:

select t.id,
       max(case when v.var = 'A' then 1 else 0 end) as a,
       max(case when v.var = 'B' then 1 else 0 end) as b,
       max(case when v.var = 'C' then 1 else 0 end) as c,
       max(case when v.var = 'D' then 1 else 0 end) as d
from t cross apply
     (values (t.var1), (t.var2), (t.var3)) v(var)
group by t.id;

Он упрощает условия, сначала отключая данные. Конечно, вы также можете использовать:

select id,
       max(case when 'A' in (var1, var2, var3) then 1 else 0 end) as a,
       max(case when 'B' in (var1, var2, var3) then 1 else 0 end) as b,
       max(case when 'C' in (var1, var2, var3) then 1 else 0 end) as c,
       max(case when 'D' in (var1, var2, var3) then 1 else 0 end) as d
from t
group by id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...