我正在寻找转换以下数据的方法
"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解决方案吗?
答案 0 :(得分:0)
我认为您可以使用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
或具有空字符串''
-使用空字符串可能会更复杂,并且所有列都需要类似的内容:< / p>
,MAX(case when Merk='' then NULL else Merk end) Merk
如果每个itemid都有多个条目,并且希望保留所有条目,则也可以使用array_agg
:
array_agg(x)→数组<[与输入相同]> 返回根据输入的x个元素创建的数组。