Выберите строки и отметьте столбец, если найдено значение

#sql #sql-server #select #case

#sql #sql-сервер #выберите #случай

Вопрос:

мне нужна помощь для создания запроса

Текущая ситуация:

Выходная таблица содержит идентификаторы и уровни. Каждый идентификатор может отображаться несколько раз.

Проблема:

Теперь я хочу знать, отображается ли уровень 1 для идентификатора, если да, я хочу пометить его как номер 1. Если идентификатор имеет только уровень 2 или ноль, просто отметьте его как номер 0.

Выходные данные могут быть взяты из таблицы ниже.

база данных

Ответ №1:

Используйте агрегацию:

 select id,
       max(case when level = 1 then 1 else 0 end) as flag
from t
group by id;
  

Комментарии:

1. @FlEx . case , , возвращает 1 только тогда, когда level имеет значение 1 . max() Суммируется по всем строкам для данного id .