在mysql中将列转换为行
我想将结果列转换为行,而不使用MYSQL中的排名方法在mysql中将列转换为行,mysql,sql,union,transpose,Mysql,Sql,Union,Transpose,我想将结果列转换为行,而不使用MYSQL中的排名方法 select pid , phone from mt where pid = 1 ; Result : pid phone 1 556 1 678 我想要这种格式: pid phone1 phone2 1 556 678 类似地,如果执行一个只有1个值的查询,如下所示 选择pid,电话从mt,其中pid=2 它应该同时产生phone1列和phone2列,但是phone2列应该是空的,
select pid , phone from mt where pid = 1 ;
Result :
pid phone
1 556
1 678
我想要这种格式:
pid phone1 phone2
1 556 678
类似地,如果执行一个只有1个值的查询,如下所示
选择pid,电话从mt,其中pid=2
它应该同时产生phone1列和phone2列,但是phone2列应该是空的,如下所示
pid phone1 phone2
2 123 NULL
如何继续?如果只有两个值,可以使用
min()
和max()
:
选择pid,min(电话)作为电话1,
(最小(电话)最大(电话)然后最大(电话)结束时的情况)为电话2
从t
pid分组;
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;