【问题标题】:Mysql MySQL or PHP Transform rows to two columns dynamicallyMysql MySQL 或 PHP 将行动态转换为两列
【发布时间】:2016-11-10 10:01:08
【问题描述】:

我和MySQL or PHP Transform rows to columns有同样的场景

但我现在必须重组我的表格,这是输出

与上面的链接几乎相同,但我要包含 AS_amount。有人可以帮助我吗?

我想要下面的结果,但每个 FA_mont2016 的右侧都有 AS_month_2016...等

这是我的代码:

CREATE DEFINER=`root`@`localhost` PROCEDURE `display_annualize_table`()
BEGIN
SET group_concat_max_len=10028;
SET @sql = NULL;

SELECT GROUP_CONCAT(DISTINCT CONCAT(
      'MAX(IF(month = ''',
      month,
      ''' and year(date) = ',
      year(date),

      ', FS_amount, NULL)) AS `',
      CONCAT('FA_',month),
      '_',
      year(date),

      '`')
    order by date
  ) INTO @sql
  FROM tmp_results;

  if coalesce(@sql,'') != '' then
    set @sql = concat(', ', @sql);
  end if; 

  SET @sql = CONCAT(
    'SELECT r.account as Account, 
     r.region as Region ',  
     coalesce(@sql,''),
    'FROM tmp_results r
     LEFT JOIN accounts AS a
     on r.account_id = a.id
     GROUP BY r.account, r.region
     ORDER By r.account_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END

请您帮忙。提前谢谢!

【问题讨论】:

  • 他们的代码和我一样。
  • 我赞成您的问题,感谢您的努力。

标签: php mysql laravel-5.2


【解决方案1】:

它的工作方式与FS_amount 相同,只需将新列添加到生成动态列的代码中即可:

  SELECT GROUP_CONCAT(DISTINCT CONCAT(
      'MAX(IF(month = ''',
      month,
      ''' and year(date) = ',
      year(date),
      ', FS_amount, NULL)) AS `',
      CONCAT('FA_',month),
      '_',
      year(date),
      '`, ', 
      'MAX(IF(month = ''',
      month,
      ''' and year(date) = ',
      year(date),
      ', AS_amount, NULL)) AS `',
      CONCAT('AS_',month),
      '_',
      year(date),
      '`'      
      )
    order by date
  ) INTO @sql
  FROM tmp_results;

您应该查看语句创建的代码(例如,通过临时添加 select @sql;),尽管添加更多列以防万一您需要它们应该非常简单。

【讨论】:

  • 您好 Solarflare,很遗憾我在运行此程序时遇到错误:错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“FA_November_202FROM tmp_results r LEFT JOIN accounts AS a on r.accoun”附近使用正确的语法
  • 哦,我想通了。我必须增加可能的max_concat_len。谢谢哥们! :)
猜你喜欢
  • 2021-06-20
  • 2022-01-21
相关资源
最近更新 更多