| 1. 行转列 unpivot()这是一个 SQLServer 函数,在 MySQL 里用不了 1.1 目标将如下表1转化为表2所示格式 | ID | Phone_num | Phone_type | 
|---|
 | 1 | 11 | Phone1 |  | 1 | 12 | Phone2 |  | 2 | 21 | Phone1 |  | 2 | 22 | Phone2 | 
 1.2 代码与解释根据目标需求,我们需要: 创建两个新列 Phone_num, Phone_type删除旧表的 Phone1, Phone2 两列,并将它们的列名作为新列 Phone_type 的元素根据 ID 填充这两个新列
 select * from Customers
unpivot (
    
    Phone_num
    
    
    
    for Phone_type in (Phone1, Phone2)
) as up;
 2. 列转行 pivot()目标与上部分相反: | ID | Phone_num | Phone_type | 
|---|
 | 1 | 11 | Phone1 |  | 1 | 12 | Phone2 |  | 2 | 21 | Phone1 |  | 2 | 22 | Phone2 | 
 根据目标,我们需要: 删除旧表的 Phone_num, Phone_type 两列,并将它们的元素作为新表的列名创建这两个新列 Phone1, Phone2根据 ID 以及 Phone_type 填充新列
 select * from Customers
pivot (
	
	
	
    sum(Phone_num)
    
    
    
    for Phone_type in (Phone1, Phone2)
) as up;
 |