3

给定一张像

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

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

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

4

1 回答 1

4

MySQL 没有PIVOTSQL 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 ║
╚════╩═════╩══════╝
于 2013-04-16T06:27:42.843 回答