Я хочу присвоить NULL столбцу в зависимости от того, является ли другой столбец NULL. Оба этих столбца являются результатом предыдущего CTE, и, похоже, я не могу заставить его работать.
Вот мой код:
select
off_rent_start_date,
days_off_rent,
case
when days_off_rent IS NULL
then off_rent_start_date NULL
end
from
FinalData
Необработанные данные выглядят так:
Ожидаемый результат должен выглядеть так:
не указывайте две вещи после then и перед end.
@Луук, я все еще не понимаю
Ссылка: CASE THEN result_expression. За каждым then следует одно выражение. off_rent_start_date NULL — это не отдельное выражение, и неясно, что оно может означать.





Похоже, вам нужно что-то вроде этого:
Select
Case When days_off_rent IS NULL -- this is condition that could be True or False
Then NULL -- When True return NULL
Else off_rent_start_date -- Else (False) return value from column off_rent_start_date
End as off_rent_start_date, -- this is column alias (label) for the resultset
days_off_rent
From FinalData
Выражение CASE работает последовательно сверху вниз. Первое условие WHEN, выполненное, возвращает значение THEN и выходит из CASE. Если ни один из них не удовлетворен, возвращает значение из ELSE, а если ELSE не определено (это необязательно), возвращает NULL.
Имея это в виду - тот же результат, который вы могли бы получить, используя обратную логику - когдаdays_off_rent НЕ NULL, выберите off_rent_start_date, в противном случае NULL.
Select
Case When days_off_rent IS NOT NULL
Then off_rent_start_date
End as off_rent_start_date, -- there is no ELSE - so it results as NULL if WHEN condition is not satisfied
days_off_rent
From FinalData
да, это кажется более правильным (я удалил свой ответ), см.: dbfiddle.uk/cvhnIKoo
@d r Спасибо, это работает
сообщение об ошибке «Неверный синтаксис рядом с ключевым словом NULL». должно быть понятно (воспроизведение ошибки см.: dbfiddle.uk/NVx1aPhB)