#sql #sql-server #select
Вопрос:
Может ли кто-нибудь, пожалуйста, помочь мне выбрать только строки, которые не имеют нулевого значения столбца, где этот столбец может иметь нулевые или ненулевые значения для одного и того же идентификатора
У меня есть такой столик
Мне нужен такой результат, как этот
Комментарии:
1. тот же идентификатор , означает ли это то же
col1
значение?2. Вы имеете в виду, что если есть запись без нулевого значения, то она выбирается, но если только ull, то нулевая тоже в порядке?
3. Следует ли также учитывать нули col2 и col3?
4. @Whencesever да , если есть значение null и значение, то следует выбрать значение один, если есть только значение null, то следует выбрать значение null
5. Каковы типы данных других столбцов (нет
col1
)? Все ли они одинаковы? Публикация ваших данных в удобном для использования формате ( не изображений) значительно поможет нам помочь вам.
Ответ №1:
Ваше описание не очень понятно. Если я правильно понимаю ваше требование, вам нужно только 1 строка на каждую col1
. Выберите строку с наибольшим ненулевым значением ?
select *
from
(
select *, rn = row_number() over (partition by col1
order by case when col2 is not null then 1 else 0 end
case when col3 is not null then 1 else 0 end
case when col4 is not null then 1 else 0 end
desc)
from a_table
) d
where rn = 1