给出像
这样的表格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
这可以在一个查询中完成吗?
我已经尝试了几乎所有我能想到的变化,但都是错误。
答案 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 ║
╚════╩═════╩══════╝