Php 如何在mysql中有条件地将行转换为列?请读正文
我有一个表,其中包含这样的数据Php 如何在mysql中有条件地将行转换为列?请读正文,php,mysql,datatables,Php,Mysql,Datatables,我有一个表,其中包含这样的数据 id | customerName | Campaign questionId | answerID | caseID | 1 | john | Inbound | 1 | 2 | 1 2 | john | Inbound | 2 | 3 | 1 3 | john | Inbound | 3 | 1 | 1 4
id | customerName | Campaign questionId | answerID | caseID |
1 | john | Inbound | 1 | 2 | 1
2 | john | Inbound | 2 | 3 | 1
3 | john | Inbound | 3 | 1 | 1
4 | john | Inbound | 4 | 5 | 1
5 | john | Inbound | 5 | 4 | 1
6 | john | Outbound| 6 | 7 | 1
7 | john | Outbound| 7 | 9 | 1
8 | john | Outbound| 8 | 2 | 1
9 | john | Outbound| 9 | 1 | 1
10 | john | Outbound|10 | 4 | 1
详细信息:一个客户可以有多个案例,每个案例可以为每个客户进行两次调查,即出站调查和入站调查。这些调查共有10个预定义问题。5个用于出站,5个用于入站。在我目前的情况下,我能够获得如上所示的数据,每个问题和答案对应一行。总计=针对具有1个案例和2个活动(共10行)的客户。
我的目标是每个客户每个案例获得2行。1行用于入站,其他行用于出站。我没有为每个问题设置一行重复信息,而是为每个问题寻找列。
预期结果:
id|Name|caseId |Campaign | Q1 | Q2 | Q3 | Q4 | Q5
1 |John| 1 |Outbound | 2 | 3 |1 | 5 | 4
2 |John| 1 |Inbound | 7 | 9 |2 | 1 | 4
总问题:10个预定义问题;
境外调查:5个问题
入站调查:5个问题您可以使用条件聚合来执行数据透视,并根据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
谢谢你,尼克。我已经经历了这一过程,这正是我所寻找的。然而,如果这两项调查有一个共同的问题,那就是一个小问题。让我们假设qId 4同时存在。在这种情况下,答案变为空。@MuhammedSabi,这似乎很奇怪。你能修改我的小提琴来演示这个问题吗?对不起,我的错。它很好用。结果发现我的数据集有问题。@MuhammedSabi很高兴听到这个消息。如果这确实解决了你的问题,请考虑标记答案接受在上/下投票箭头下的复选标记。看见
customerName caseID Campaign Q1 Q2 Q3 Q4 Q5
john 1 Inbound 2 3 1 5 4
john 1 Outbound 7 9 2 1 4