【问题标题】:Implement Dynamic pivot in MYSQL在 MYSQL 中实现动态数据透视
【发布时间】:2021-09-28 03:12:29
【问题描述】:

我写了一个mysql查询

SELECT id,GROUP_CONCAT(answer.text) as answer,question.question_name as question
FROM user_answers
inner join answer on user_answers.answer_id=answer.answer_id
inner join question on answer.question_id=question.question_id
GROUP BY id,question.question_id

我得到的结果是

但我希望得到答案

如何转置我的数据。 ?

我试过这个查询。但没有得到实际结果。它的重复

SELECT  id,
     GROUP_CONCAT(
         CASE 
             WHEN question.question_name = 'Household'
             THEN answer.text
             ELSE NULL 
         END
     ) AS Household,
     GROUP_CONCAT(
         CASE 
             WHEN question.question_name = 'Dependents' 
             THEN answer.text
             ELSE NULL 
         END
     ) AS Dependents,
     GROUP_CONCAT(
         CASE 
             WHEN question.question_name = 'Generation'
             THEN answer.text
            ELSE NULL 
         END
     ) AS Generation,
     GROUP_CONCAT(
         CASE 
             WHEN question.question_name = 'Gender' 
             THEN answer.text
             ELSE NULL 
         END
     ) AS 'Gender',
     GROUP_CONCAT(
         CASE 
             WHEN question.question_name = 'Race' 
             THEN answer.text
             ELSE NULL 
         END
     ) AS 'Race',
     GROUP_CONCAT(
         CASE 
             WHEN question.question_name = 'FinancialGoals' 
             THEN answer.text
             ELSE NULL 
         END
     ) AS 'FinancialGoals'
FROM user_answers
inner join answer on user_answers.answer_id=answer.answer_id
inner join question on answer.question_id=question.question_id
GROUP BY id,question.question_id,question.question_name

结果是

添加了激进的功能,结果列仍然重复

【问题讨论】:

  • 嗨@Luuk,我试过了,但我得到了重复的值。我用重复更新了问题
  • 您必须重新阅读我之前发布的链接,并多加注意。 (您的 SQL 语句中缺少一个聚合函数(实际上不止一个)。)
  • 还添加了聚合......但输出相同。它的重复
  • @Luuk 谢谢。 .. :) 我得到了我的问题.. group by 子句中的问题。

标签: mysql sql pivot mysql-workbench dynamic-pivot


【解决方案1】:

我得到了答案。

SELECT  id,
         GROUP_CONCAT(
             CASE 
                 WHEN question.question_name = 'Household'
                 THEN answer.text
                 ELSE NULL 
             END
         ) AS Household,
         GROUP_CONCAT(
             CASE 
                 WHEN question.question_name = 'Dependents' 
                 THEN answer.text
                 ELSE NULL 
             END
         ) AS Dependents,
         GROUP_CONCAT(
             CASE 
                 WHEN question.question_name = 'Generation'
                 THEN answer.text
                ELSE NULL 
             END
         ) AS Generation
       
    FROM user_answers
    inner join answer on user_answers.answer_id=answer.answer_id
    inner join question on answer.question_id=question.question_id
    GROUP BY id

【讨论】:

  • 你也可以查看answers这个包含动态方法的标题,这里不需要重复question_name列的每个案例。
猜你喜欢
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-28
  • 2019-02-04
相关资源
最近更新 更多