我正在寻找转换以下数据的方法
"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元素创建的数组。