我有这张桌子
------------------
1 | 20,00 | A |
2 | 20,00 | A |
3 | 20,00 | A |
4 | 20,00 | A |
1 | 50,00 | B |
2 | 50,00 | B |
3 | 50,00 | B |
4 | 50,00 | B |
我想用group by来制作这个。
id | A | B |
----------------------
1 | 20,00 | 50,00 |
2 | 20,00 | 50,00 |
3 | 20,00 | 50,00 |
4 | 20,00 | 50,00 |
你能帮助我吗?
答案 0 :(得分:5)
这是标准的透视查询:
SELECT t.id,
MAX(CASE WHEN t.col = 'A' THEN t.value ELSE NULL END) AS A,
MAX(CASE WHEN t.col = 'B' THEN t.value ELSE NULL END) AS B
FROM TABLE t
GROUP BY t.id
MySQL不支持PIVOT / UNPIVOT语法。
答案 1 :(得分:3)
这看起来不像group by
问题。但您可以使用join
轻松解决此问题。
SELECT
a.id,
a.a,
b.b
FROM table AS a
JOIN table AS b ON a.id = b.id
WHERE a.name = 'A' AND b.name = 'B'
答案 2 :(得分:0)
假设您的表是“table_name”,第一列是“id”,第二列是“Value”,第三列是“Type”,是一个带有'A'或'B'的枚举:
SELECT
a.ID,
a.Value,
b.Value
FROM table_name AS a,
table_name AS b
WHERE a.ID=b.ID AND
a.Type='A' AND
b.Type='B'