如何解决MySQL将多行转换为单行中的列
MysqL没有PIVOT / UNPIVOT语法,这使您可以结合使用GROUP BY和CASE表达式:
INSERT INTO SUMMARY
(user_id,valueA,valueB)
SELECT d.user_id,
MAX(CASE WHEN d.code = 5 THEN d.value ELSE NULL END),
MAX(CASE WHEN d.code = 6 THEN d.value ELSE NULL END),
FROM DETAILS d
GROUP BY d.user_id
解决方法
我有一个带有列的详细信息表:
- user_id int
- 代码int
- 值int
我想建立一个汇总表,如下所示:
- user_id int
- valueA int
- valueB int
在详细信息表中,valueA对应于说代码5,而valueB对应于说代码6,所以我正在寻找类似的东西:
插入摘要(user_id,valueA,valueB)VALUES(从详细信息中选择???);
当然,问题是我正在查看“详细信息”表中的多行以填充“摘要”表中的一行。
例如,如果我有以下详细信息行:
1 5 100
1 6 200
2 5 1000
2 6 2000
我想在汇总表中添加以下内容:
1 100 200
2 1000 2000
有任何想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。