Попытка создать флаг на основе значений рейтинга в двух отдельных столбцах - PullRequest
0 голосов
/ 05 августа 2020

У меня есть запрос, в котором у меня есть повторяющиеся строки для определенных идентификаторов, но есть два разных столбца, созданные оконными функциями, и мне нужно создать флаг для каждой строки в определенном порядке. Ниже я привел пример того, как выглядят данные.

У меня есть столбец RANK_ONE, который возвращает ранжированное значение или ноль, и не каждый идентификатор имеет значение, но если оно есть, оно мне нужно чтобы вернуть 1 для строки, содержащей 1.

Столбец RANK_TWO в основном тот же, но мне нужно пометить 1 строку, ЕСЛИ еще нет 1, помеченного из RANK_ONE для того же идентификатора.

введите описание изображения здесь

Столбец PRIMARY - это мой желаемый результат. Есть мысли?

Не знаю, слишком ли долго я был в запросе и не вижу простого решения прямо перед собой, но это сводит меня с ума, пытаясь понять это.

1 Ответ

1 голос
/ 05 августа 2020

Похоже, вы хотите rank_one, если это каждая 1 для id, иначе rank_two:

select t.*,
       (case when max(case when rank_one = 1 then 1 else 0 end) over (partition by id) = 1 and rank_one = 1 then 1
             when max(case when rank_one = 1 then 1 else 0 end) over (partition by id) = 1 then 0
             when rank_two = 1 then 1
             else 0
        end) as primary
from t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...