透视两个列以编程方式保存相应的ID

时间:2018-02-08 18:48:33

标签: sql pivot snowflake-datawarehouse

我有一个包含以下结构的表

ID    Category    Value
1        Age        23
1      Income     10000
2        Age        30
2      Income     50000

我想将其转动,以便每个ID有一行

ID      Age   Income
1       23     10000
2       30     50000

我不确定它是否可能存在于Snowflake DB中。

编辑:实际的表在类别因子中有206个级别,所以我正在寻找一种编程方式,而不需要在查询中引用类别级别。

2 个答案:

答案 0 :(得分:1)

这样的事情可以通过使用CASE语句为您提供所需的信息:

SELECT ID,
CASE WHEN Category = 'Age' THEN Value END as 'Age',
CASE WHEN Category = 'Income' THEN Value END as 'Income'
FROM TABLENAME

答案 1 :(得分:1)

您可以使用条件聚合:

SELECT ID,
       MAX(CASE WHEN Category = 'Age' THEN Value END) as Age,
       MAX(CASE WHEN Category = 'Income' THEN Value END) as Income
FROM TABLENAME
GROUP BY ID;