У меня есть такая таблица в BigQuery:
ID CODE
aa code-r
aa code-k
aa code-s
aa code-special-r
aa code-special-k
aa code-t
bb code-r
bb code-k
bb code-special-k
bb code-t
cc code-r
cc code-k
cc code-t
Мне нужно выбрать строки из каждого идентификатора, где присутствует специальный код, иначе берем обычный код. Итак, результат должен быть:
ID CODE
aa code-s
aa code-special-r
aa code-special-k
aa code-t
bb code-r
bb code-special-k
bb code-t
cc code-r
cc code-k
cc code-t
Я думал как-нибудь использовать rew_number(), но не могу найти решение.
По вашему требованию вы можете рассмотреть следующий запрос:
КОД:
select ID,CODE from (select *,rank() over(partition by ID,lastcode order by findlast desc) as r from
(SELECT *,RIGHT(code,1) as lastcode,CASE when code LIKE "%special%" THEN (RIGHT(code,1)) ELSE NULL END AS findlast FROM table) )
where r=1 order by ID;
РЕЗУЛЬТАТ:
Для получения дополнительной информации перейдите по ссылке 1 и ссылке 2.
Привет @Giacomo, я опубликовал ответ. Я надеюсь, что это поможет вам. Рассмотрите возможность проголосовать за и принять, если это поможет, в противном случае дайте мне знать, чтобы я мог улучшить свой ответ.