我有一个列的详细信息表:
我想构建一个如下所示的汇总表:
在详细信息表中,valueA对应于say,代码5,valueB对应于say,代码6,所以我正在寻找类似的东西:
插入摘要(user_id,valueA,valueB)VALUES(SELECT from from details);
问题当然是我正在查看"详细信息"表中的多行以填充"摘要"表中的一行.
例如,如果我有详细的以下行:
1 5 100
1 6 200
2 5 1000
2 6 2000
Run Code Online (Sandbox Code Playgroud)
我想在摘要表中得到以下结果:
1 100 200
2 1000 2000
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11320 次 |
| 最近记录: |