如何在Redshift中合并行

4

我在redshift中有一个表,其中包含一个共同标识符的列,以及许多其他属性列。然而,相同的标识符会出现在多行中,每个属性都有一行。我希望将它们合并。

例如:

Common ID | Attribute 1 | Attribute 2
123          X             null
123          null          Y
987          null          A
987          B             null

我想要将其转换为:

Common ID | Attribute 1 | Attribute 2
123         X             Y
987         B             A

这个问题的本质是我通过使用 case 语句来旋转表格,但最终输出需要按照共同的 id 合并或分组(但没有聚合)。

请注意,在最终产品中,大约有 ~20 个属性,因此最好是一个对属性数量不敏感的解决方案。这也意味着相同的 id 最多可能出现 20 次左右。

我已经研究了 listagg 但想要最终输出具有相同数量的列,而不是一个聚合/串联的列。

1个回答

2

使用聚合功能:

select common_id, max(attribute_1) as attribute_1, max(attribute_2) as attribute_2
from t
group by common_id;

你可以通过修复group by键来解决这个问题,这个问题可以在生成数据的查询中解决。


另请参阅:postgresql(redshift)特定列的最大值。Amazon Redshift基于PostgreSQL 8.0.2。 - MikeJRamsey56

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接