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 

しかし、これらを1つのクエリで選択したいので、次のような結果が得られます

id   y1    y2
--  ---   ---
5   200    3000
6   135    2222

これは 1 つのクエリで実行できますか?

考えられるほぼすべてのバリエーションを試しましたが、すべてエラーです。

4

1 に答える 1

4

PIVOTMySQL には のような機能はありませんSQL ServerMAX()それでも、 を使用してシミュレート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 に答える