我有一个包含数据的表id | customerName | Campaign questionId | answerID | caseID | 1 | john | Inbound | 1 | 2 | 12 | john | Inbound | 2 | 3 | 1 3 | john | Inbound | 3 | 1 | 14 | john | Inbound | 4 | 5 | 15 | john | Inbound | 5 | 4 | 16 | john | Outbound| 6 | 7 | 17 | john | Outbound| 7 | 9 | 18 | john | Outbound| 8 | 2 | 1 9 | john | Outbound| 9 | 1 | 110 | john | Outbound|10 | 4 | 1详细信息:一个客户可以有多个案例,每个案例可以针对每个客户进行两次调查,分别是出站和入站。这些调查共有 10 个预定义问题。出站 5 个,入站 5 个。在我目前的情况下,我能够获得如上所示的数据,每个问题和答案都有 1 行。总计 = 对于有 1 个案例和 2 个活动的客户,即 10 行。我的目标是每个客户获得 2 行,每个案例。1 行用于入站,其他用于出站。我不是在为每个问题设置重复信息的行,而是为每个问题寻找列。期望的结果:id|Name|caseId |Campaign | Q1 | Q2 | Q3 | Q4 | Q51 |John| 1 |Outbound | 2 | 3 |1 | 5 | 42 |John| 1 |Inbound | 7 | 9 |2 | 1 | 4 总问题:10 个预定义问题;出站调查:5 个问题 入站调查:5 个问题
1 回答
湖上湖
TA贡献2003条经验 获得超2个赞
您可以使用条件聚集执行枢轴和分组在得到你想要的结果caseID,customerName并Campaign:
SELECT customerName,
caseID,
Campaign,
MAX(CASE WHEN questionID % 5 = 1 THEN answerID END) AS Q1,
MAX(CASE WHEN questionID % 5 = 2 THEN answerID END) AS Q2,
MAX(CASE WHEN questionID % 5 = 3 THEN answerID END) AS Q3,
MAX(CASE WHEN questionID % 5 = 4 THEN answerID END) AS Q4,
MAX(CASE WHEN questionID % 5 = 0 THEN answerID END) AS Q5
FROM data
GROUP BY caseID, customerName, Campaign
输出:
customerName caseID Campaign Q1 Q2 Q3 Q4 Q5
john 1 Inbound 2 3 1 5 4
john 1 Outbound 7 9 2 1 4
- 1 回答
- 0 关注
- 175 浏览
添加回答
举报
0/150
提交
取消