我试图转变这句话:
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
但正如你可以通过小提琴看到的那样,我得到一些奇怪的输出作为列而不是实际的列,我在这里做错了什么?
答案 0 :(得分:1)
我通常会进行正则表达式搜索,以便在单行中选择所有代码或选择单行代码。
使用find&取代
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平台和大多数编辑器。