У меня есть таблица Redshift Spectrum с именем customer_details_table
, где столбец id
не является уникальным. У меня есть другой столбец hierarchy
, который основан на том, какая запись должна иметь приоритет, если они имеют одинаковый идентификатор. Вот пример:
Здесь, если мы несколько раз встречаемся с одним и тем же идентификатором 28846
, мы выберем Джона в качестве квалифицируемого учитывая, что у него максимальная иерархия.
Я пытаюсь создать этот столбец eligibility
, используя group by
на id
, а затем выбираю запись, соответствующую максимальному hierarchy
. Вот мой SQL код:
SELECT *,
CASE WHEN (
(id , hierarchy) IN
(SELECT id , max(hierarchy)
FROM
customer_details_table
GROUP BY id
)
) THEN 'Qualified' ELSE 'Disqualified' END as eligibility
FROM
customer_details_table
При выполнении этого я получаю следующую ошибку:
SQL Error [500310] [XX000]: [Amazon](500310) Invalid operation: This type of IN/NOT IN query is not supported yet;
Приведенный выше код работает нормально, когда моя таблица (customer_details_table
) является обычной Таблица красного смещения, но происходит сбой, когда эта же таблица является внешней таблицей спектра. Кто-нибудь может предложить хорошее решение / альтернативу для достижения того же логика c в таблицах спектра?