在没有聚合函数的情况下将行显示为列



我有这样的数据

type reg     met
AAC  AP     5.849357195
SAC  EM     0.8690077048
SAC  AP     0.537474743
AAC  EM     3.118546972
AAC  La     7.385316518

我想使用SQL或presto 显示如下

type    AP              EM         La
AAC  5.849357195    3.118546972 7.385316518
SAC  0.537474743    0.8690077048    -

pivot似乎不适合我的用例,因为pivot中应该有一个聚合。

有人能帮忙吗?

您可以使用条件聚合:

select type,
max(case when reg = 'AP' then met end) as ap,
max(case when reg = 'EM' then met end) as em,
max(case when reg = 'LA' then met end) as la
from t
group by type;

请注意,您也可以将pivotmax()一起使用。我建议使用条件聚合。它是标准SQL,更灵活,而且据我所知,使用pivot没有性能优势。

相关内容

  • 没有找到相关文章

最新更新