php - SQL查询: Rows to Columns Pivot into PHP Array/HTML Output

标签 php mysql sql pivot

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

我在 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

最佳答案

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

如果您的天数未知,则更首选动态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;

关于php - SQL查询: Rows to Columns Pivot into PHP Array/HTML Output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15028124/

相关文章:

PHP 将 zip 文件保存到磁盘

MySQL Workbench 错误 1305 PROCEDURE 不存在

sql - 选择当年的特定日期

php - 我正在尝试使用 php 和 jquery.php 变量更改 div 的背景图像,但未获取值

php - 检查值是否已存在于行而不是列单元格中

mysql - 如何检查 Rails 3.2 是否可以连接到 MySQL?

sql - 如何通过将发票的每一行相加来找到发票的总价格?

php - 显示新消息通知

php - URL 重写,包括标题

php - 使用 CASE 更新多行需要很长时间