gpt4 book ai didi

mysql - 如何使用 MYSQL 将行转置为列

转载 作者:行者123 更新时间:2023-11-29 21:16:33 26 4
gpt4 key购买 nike

我现在迫切需要帮助,因为我的项目由于这个问题而无法完成。这是我的问题:

我有一个“调查”表。每项调查有 47 个问题,用户将回答这些问题并将其存储到数据库中。我错误地将每 47 个问题存储到 47 行中。这意味着如果有 5 个人参加调查,我的表中的总数将是 47*5(行)。假设我有 10,000 项调查,那么我将有 47*10,000(行)。这影响了我的应用程序和报告的性能。

现在我想要实现的目标是将每 47 行转置为 47(列)。例如 5*47(行)会给我 5(行)47(列)

UserID | Q1     | Q2     | Q3    | Q4     |--- |Q47
-----------------------------------------------------
user 1 | Answer1 | answer2 |answer3 |answer 4 | ----answer47
user 2 | Answer1 | answer2 |answer3 |answer 4 | ----answer47
user 3 | Answer1 | answer2 |answer3 |answer 4 | ----answer47

This is my code. The code only transpose the data and groupped by userID, but i want to display all the multiple userID with the corresponding answers. PLEASE HELP ME

$sql = "SELECT agentId,
MAX(IF(questionid= 1, answer, '')) Q1,
MAX(IF(questionid= 2, answer, '')) Q2,
MAX(IF(questionid= 3, answer, '')) Q3,
MAX(IF(questionid= 4, answer, '')) Q4,
MAX(IF(questionid= 43, answer, '')) Q43,
MAX(IF(questionid= 44, answer, '')) Q44,
MAX(IF(questionid= 35, answer, '')) Q45,
MAX(IF(questionid= 46, answer, '')) Q46,
MAX(IF(questionid= 47, answer, '')) Q47,
FROM surveyanswers users GROUP BY agentId ORDER BY agentId";

最佳答案

http://www.databasejournal.com/features/mssql/converting-rows-to-columns-pivot-and-columns-to-rows-unpivot-in-sql-server.html您的问题是这样的,您可以对用户进行分组,而不是对国家/地区进行分组。

关于mysql - 如何使用 MYSQL 将行转置为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35889222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com