如何将与一个ID对应的多行转换为单行-Presto

  • 本文关键字:转换 -Presto 单行 ID 一个 presto
  • 更新时间 :
  • 英文 :


我正在寻找转换以下数据的方法

"itemid"        "attr_id"        "Merk"        "Berat"        "Panjang"        "BPOM"        "TInggi"        "Kadaluarsa"
3624918424        14718        "Hansaplast"        ""            ""              ""            ""        ""
3624918424        22229             ""             ""            ""              ""            ""         "24 Bulan"

进入这个

itemid  Merk    Berat   Panjang BPOM    TInggi  Kadaluarsa
3624918424  Hansaplast                  24 Bulan

我在SO中检查了另一个问题,最流行的答案是使用PIVOT函数。但该函数在presto中并不存在。有人能用presto找到解决方案吗?

我认为您可以使用GROUP BY子句来获得所需的结果:

SELECT itemid
,MAX(Merk) Merk
,MAX(Berat) Berat
,MAX(Panjang) Panjang
,MAX(BPOM) BPOM
,MAX(TInggi) TInggi
,MAX(Kadaluarsa) Kadaluarsa
from data_table
GROUP BY itemid

在您的示例中,不清楚列是NULL还是有一个空字符串''——对于空字符串,它可能有点复杂,并且您需要类似于所有列的东西:

,MAX(case when Merk='' then NULL else Merk end) Merk

如果每个itemid有多个条目,并且希望保留所有条目,则也可以使用array_agg:

array_agg(x(→数组<[与输入相同]>返回根据输入的x元素创建的数组。

最新更新