这可以在一个查询中:SELECT x as y1 WHERE y = 1而SELECT x as y2 WHERE y = 2?

时间:2013-04-16 06:25:32

标签: mysql sql pivot

给出像

这样的表格
id   x     y
--  ---   ---
5   200    1
5   3000   2
5   224    3
6   135    1
6   2222   2
6   16     3

我可以使用

获取y = 1的所有x值
SELECT x as y1 
WHERE y = 1 

我可以使用

得到y = 2的所有x值
SELECT x as y2 
WHERE y = 2 

但我想在一个查询中选择这些,所以我得到像

这样的结果
id   y1    y2
--  ---   ---
5   200    3000
6   135    2222

这可以在一个查询中完成吗?

我已经尝试了几乎所有我能想到的变化,但都是错误。

1 个答案:

答案 0 :(得分:4)

MySQL没有PIVOT函数,就像SQL Server一样。但您仍然可以使用MAX()CASE()来模拟它,以便连续测试其值。

SELECT  ID,
        MAX(CASE WHEN y = 1 THEN x END) y1,
        MAX(CASE WHEN y = 2 THEN x END) y2
FROM    TableName
GROUP   BY ID

输出

╔════╦═════╦══════╗
║ ID ║ Y1  ║  Y2  ║
╠════╬═════╬══════╣
║  5 ║ 200 ║ 3000 ║
║  6 ║ 135 ║ 2222 ║
╚════╩═════╩══════╝