Mysql MySQL或PHP动态地将行转换为两列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql MySQL或PHP动态地将行转换为两列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1432字,纯文字阅读大概需要3分钟。
内容图文
![Mysql MySQL或PHP动态地将行转换为两列](/upload/InfoBanner/zyjiaocheng/888/0fdafe247fc14be18a2b5873bf5099bd.jpg)
我有与MySQL or PHP Transform rows to columns中相同的场景
但我现在必须重组我的表,这是输出
它与上面的链接几乎相同,但我要包含AS_amount.anyone可以帮助我吗?
我希望得到以下结果,但在每个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
需要你的帮助.先感谢您!
解决方法:
它的工作方式与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;),尽管在您需要它们时添加更多列应该非常简单.
内容总结
以上是互联网集市为您收集整理的Mysql MySQL或PHP动态地将行转换为两列全部内容,希望文章能够帮你解决Mysql MySQL或PHP动态地将行转换为两列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。