gpt4 book ai didi

php - Mysql MySQL 或 PHP 将行动态转换为两列

转载 作者:行者123 更新时间:2023-11-29 02:47:10 25 4
gpt4 key购买 nike

我的场景与 MySQL or PHP Transform rows to columns 中的场景相同

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

enter image description here

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

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

enter image description here

这是我的代码:

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

需要您的帮助。提前致谢!

最佳答案

它的工作方式与 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;),尽管添加更多列应该非常简单,以防万一需要他们。

关于php - Mysql MySQL 或 PHP 将行动态转换为两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40524707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com