繁体   English   中英

将多个SQL命令重写为一个查询

[英]Rewriting multiple SQL commands into a single query

我正在尝试转述以下声明:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when year = ',
      year,
      ' then experience_rate end) AS `',
      year, '-Pen`'
    ) ORDER BY year
  ) INTO @sql
FROM
  spooner_pec;
SET @sql = CONCAT('SELECT policy_number, primary_name, ', @sql, ' 
                  FROM spooner_pec 
                   GROUP BY policy_number');

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

变成这样的东西:

SELECT policy_number, primary_name, (SELECT GROUP_CONCAT(DISTINCT CONCAT('max(case when year = ', year, ' then experience_rate end) AS `', year, '-Pen`') ORDER BY year))
FROM spooner_pec 
GROUP BY policy_number

但是,正如您在小提琴上看到的那样,我得到了一些奇怪的输出,而不是实际的列,而不是实际的列。

SQLFiddle

我通常会进行正则表达式搜索,以使所有代码都位于单行中或选定的代码位于单行中。

使用查找和替换

1. Under find section type "\n" --find all next line keywords
2. Under replace section type " " -- replace \n with one blank space
3. Tick "Use Regular Expression"

您的结果将在一行中。

之前

在此处输入图片说明

在此处输入图片说明 用部分替换是空白

*注意:此方法适用于Windows平台和大多数编辑器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM