Мой вопрос будет использовать этот набор данных в качестве примера. У меня есть настройка запроса (я изменил переменные на более общие переменные, чтобы разместить их в Интернете, чтобы запрос мог не иметь смысла), который выбирает самую последнюю дату для данной учетной записи. Таким образом, запрос возвращает значения с типом reason_type, равным 1, с самой последней датой. Для этого запроса значение_даты_, установленное на , не равно нулю.
account date effective_date value reason_type
123456 4/20/2017 5/1/2017 5 1
123456 1/20/2017 2/1/2017 10 1
987654 2/5/2018 3/1/2018 15 1
987654 12/31/2017 2/1/2018 20 1
456789 4/27/2018 5/1/2018 50 1
456789 1/24/2018 2/1/2018 60 1
456123 4/25/2017 null 15 2
789123 5/1/2017 null 16 2
666888 2/1/2018 null 31 2
333222 1/1/2018 null 20 2
Сейчас я хочу использовать эту логику, чтобы применять ее только к типу причины_1006 *.
если для него есть запись, в противном случае по умолчанию используется значение reason_type
Я думаю, что мне следует использовать IFELSE
, но я не знаю, как мне поступить.
Вот код, который мне в настоящее время приходится возвращать самую последнюю запись.
Надеюсь, мой вопрос понятен.
SELECT account, date, effective_date, value, reason_type
from
(
SELECT account, date, effective_date, value, reason_type
ROW_NUMBER() over (partition by account order by date desc) rn
from mytable
WHERE value is not null
AND effective_date is not null
)
WHERE rn =1