SQL Server中基于ID的一列到多列

Say*_*jee 1 mysql sql sql-server

我有一个表结构:

ID |类型|值
1电子邮件abcd@xyz.com
1电话12345
2电话56789
2工作电话 546789

我想把它变成

ID |电子邮件|电话|工作电话
1 abcd@xyz.com 12345空
2空56789 546789

谁能帮我解决这个问题。抱歉,如果您之前已经重复过此问题。

Sql*_*Zim 5

使用条件聚合:

select 
    id
  , max(case when type = 'email' then value end) as email
  , max(case when type = 'phone' then value end) as phone
  , max(case when type = 'workphone' then value end) as workphone
from t
group by id
Run Code Online (Sandbox Code Playgroud)

pivot()(在sql-server中):

select id, email, phone, workphone
from t
pivot (max(value) for type in ([email],[phone],[workphone])) p
Run Code Online (Sandbox Code Playgroud)

extrester演示:http://rextester.com/UGT52844

都返回:

+----+--------------+-------+-----------+
| id |    email     | phone | workphone |
+----+--------------+-------+-----------+
|  1 | abcd@xyz.com | 12345 | NULL      |
|  2 | NULL         | 56789 | 546789    |
+----+--------------+-------+-----------+
Run Code Online (Sandbox Code Playgroud)