2017-11-29 9 views
1

MYSQLのランキング方法を使用せずに、結果の列を行に転置したい。mysqlの列を行に転じる

select pid , phone from mt where pid = 1 ; 

Result : 

pid phone 
1  556 
1  678 

私はこの形式でそれをしたい:

pid phone1 phone2 
1  556  678 

同様に1

以下セレクトPID等のみ1の値、MT PID = 2から電話を持つクエリを実行する場合、

この結果、phone1とphone2の両方の列が生成されますが、phone2列は次のようにNULLになるはずです。

pid phone1  phone2 
    2  123  NULL 

さらに進んでください。

+0

の可能性のある重複[MySQLのピボット行の列の動的数に(https://stackoverflow.com/questions/12004603/ mysql-pivot-row-into-dynamic-number-of-columns) – cdaiga

答えて

1

2つだけの値がある場合は、min()max()を使用することができます。

select pid, min(phone) as phone_1, 
     (case when min(phone) <> max(phone) then max(phone) end) as phone_2 
from t 
group by pid; 
+0

いいねhttp://sqlfiddle.com/#!9/0d27c1/1 –

+0

thanks..it worked :) – goonernike