我有一个名为customer_details_table
的Redshift Spectrum表,其中id
列不是唯一的。我还有另一列hierarchy
,该列基于具有相同ID的记录应具有的优先级。这是一个示例:
在这里,如果我们多次遇到与28846
相同的id,则考虑到John具有最高的等级,我们将选择John作为合格的ID。
我正在尝试使用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
)是常规Redshift表时,上面的代码可以正常工作,但是当同一表是外部频谱表时,上述代码将失败。任何人都可以提出一个好的解决方案/替代方法来在频谱表中实现相同的逻辑吗?