将MySQL数据库行调试为动态列数

时间:2018-04-10 20:41:53

标签: mysql

我最近遇到了下面的主题,它在为MySQL构建动态SQL时非常有用。

MySQL pivot row into dynamic number of columns

话虽如此,我确实很难尝试调试语句。现在为了这篇文章的真正目的!要进行调试,我会在包含语句的变量上运行Select(选择@SQL)。然后从查看器窗口复制该结果并让查询分析器对其进行检查。一旦我这样做,开发真的加快了。我相信所有高级开发人员都知道这一点,但对于任何新手,我希望这有帮助!

我的动态语句看起来像是一个参考。

SET @sql = NULL;
SET @@group_concat_max_len = 50000;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      ' sum(
      case when symbol = ''',
      symbol,
      ''' then pctttlassets end) AS ',
      CONCAT(UPPER(ACode),'_',REPLACE(Symbol, '+', ''))
    )
  ) INTO @sql
from trade_detail this;

SET @sql = CONCAT('SELECT Distinct(main.port_code) as PortCode, ', @sql, ' 
FROM trade_detail main GROUP BY main.Port_Code');

SELECT @SQL;

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

0 个答案:

没有答案