MySql包含多个列

时间:2010-08-17 00:43:56

标签: sql mysql database pivot

我有这张桌子

------------------
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 |

你能帮助我吗?

3 个答案:

答案 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'