【问题标题】:SQL Query: Rows to Columns Pivot into PHP Array / HTML OutputSQL 查询:行到列转入 PHP 数组/HTML 输出
【发布时间】:2013-02-22 15:57:26
【问题描述】:

感谢您提前提供的所有帮助。

我在 MySQL PHPmyAdmin 中有一个名为“data”的表,如下所示;

Primary | Date| User | Response
   1      Mon   Tom      Yes
   2      Mon   Terry    No
   3      Mon   Lucas    Yes
   4      Tue   Tom      No
   5      Tue   Terry    No
   6      Tue   Lucas    Yes
   7      Wed   Tom      Yes
   8      Wed   Terry    Yes
   9      Wed   Lucas    No

我如何通过最可能的 SQL 查询或 Pivot / php 数组输出到表中,以便为 HTML 表输出做好准备;

Date | Tom | Terry | Lucas
Mon    Yes   No      Yes
Tue    No    No      Yes
Wed    Yes   Yes     No

【问题讨论】:

    标签: php mysql sql pivot


    【解决方案1】:
    SELECT  Date,
            MAX(CASE WHEN user = 'Tom' THEN Response ELSE NULL END) Tom,
            MAX(CASE WHEN user = 'Terry' THEN Response ELSE NULL END) Terry ,
            MAX(CASE WHEN user = 'Lucas' THEN Response ELSE NULL END) Lucas
    FROM    tableName
    GROUP   BY Date
    

    如果你有未知数量的days,最好使用动态sql,

    SET @sql = NULL;
    SELECT
      GROUP_CONCAT(DISTINCT
        CONCAT(
          'MAX(case when user = ''',
          user,
          ''' then Response end) AS ',
          user
        )
      ) INTO @sql
    FROM tableName;
    
    SET @sql = CONCAT('SELECT  Date, ', @sql, ' 
                      FROM    tableName
                      GROUP   BY Date');
    
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    

    【讨论】:

      猜你喜欢
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      相关资源
      最近更新 更多