我有一个数据集,如下所示: 索引,键,值
1, Description, Apple
2, Type, Orange
3, Desciption, Apple
4, Type, Pickle
5, Type, Orange
我知道,如果Value是数字,可以这样做:
select Index,
max(Case when key = 'Description' then Value else null end)
max(case when key = 'type' the value else null end)
from table
group by Index
但是鉴于我的value列是一个字符串,因此不适用于我的用例。请记住此Redshift,因此它没有所有的postgres函数。 所需样本输出:
Index, Description,type
1, Apple, Orange
2, Apple, Pickle
答案 0 :(得分:0)
您想要的输出没有意义,因为每个Index
值只有一个输入行。因此,无法将行分组为组合值。
相反,如果您输入的数据是:
1, Description, Apple
1, Type, Delicious
2, Description, Banana
2, Type, Big
3, Description, Pineapple
3, Type, Prickly
然后您可以使用如下查询:
SELECT
index,
MAX(CASE WHEN description = 'Description' THEN type END) as description,
MAX(CASE WHEN description = 'Type' THEN type END) as type
FROM food
GROUP BY index
输出为:
1 Apple Delicious
2 Banana Big
3 Pineapple Prickly