【问题标题】:How to transpose rows to columns using MYSQL如何使用 MYSQL 将行转置为列
【发布时间】:2016-03-09 10:39:56
【问题描述】:

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

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

现在我想要实现的是将每个 47 行转换为 47(列)。 例如 5*47(rows) 会给我 5(rows) 47(columns)

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";

【问题讨论】:

  • 你能解释一下你期望的结果是什么吗?
  • stackoverflow.com/questions/20111418/… 回答这个问题可能有助于解决您的问题。
  • @sagi,这就是我希望我的表格结果看起来像 UserID |第一季度 | Q2 |第三季度 | Q4 |--- | Q47------------------------------------------------ ---- 用户 1 |答案1 |答案2 |答案3 |答案4 | ---- 回答47 用户2 |答案1 |答案2 |答案3 |答案4 | ---- 回答 47 用户 3 |答案1 |答案2 |答案3 |答案4 | ---- 回答47 一个用户可能有超过 100 个调查,而另一个用户有超过 50 个调查。他们对调查问题的所有答案必须显示在 47 列中,每个用户 ID 在每一行上,就像我在表格中显示的那样
  • @UserX 该链接不能解决我的问题。我的数据仍然分组。我不希望它按 angentId 分组。

标签: mysql yii pivot views transpose


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    相关资源
    最近更新 更多