我有一个数据集如下:
ID Type Email
1 A emily&gmail.com
1 B adam&gmail.com
1 C tim&gmail.com
2 A jim&gmail.com
2 C kenny&gmail.com
3 A sam&gmail.com
3 B asd123&gmail.com
3 C emma&gmail.com
4 D jkl&gmail.com
4 F tester&gmail.com
4 G form&gmail.com
5 B another&gmail.com
5 C idk&gmail.com
我想使用云DB2示例中的SQL将其转换为以下格式:
ID A B
1 emily&gmail.com adam&gmail.com
2 jim&gmail.com NULL
3 sam&gmail.com asd123&gmail.com
4 NULL NULL
5 NULL another&gmail.com
如示例所示,在我的原始表中,我有3列,其中的类型可以是A、B、C、D、E、F或G。我想创建一个新数据集,其中我只保留ID列,并且每个ID在这里必须是唯一的。根据上一个类型列,A和B将是此数据集中的列。如果ID在第一个数据集中的类型为A,对应的电子邮件地址将进入A列。2 B也是如此。3如果第一个数据集中没有A或B记录,则值应为NULL。
我尝试了下面的代码,但可能语法有问题:
SELECT ID
MAX(CASE WHEN ROLE = 'A' THEN T.EMAIL ELSE NULL END) AS A,
MAX(CASE WHEN ROLE = 'B' THEN T.EMAIL ELSE NULL END) AS B
FROM MYSCHEMA.MYTABLE T
1条答案
按热度按时间qyuhtwio1#
只是为了在这里有一个答案,因为答案来自评论,我只是错过了
GROUP BY
,我可以通过删除ELSE NULL
部分来缩短查询: