Id 编号 型号 类型 用户 商家
1 1001 黑金刚 内存 小黄 畅能科技
2 1002 七彩虹 主板 小黄 畅能科技
3 1003 速龙 cpu 小黄 畅能科技
4 1004 西数160G 硬盘 小黄 畅能科技
5 1005 威刚 内存 小李 昌泰科技
6 1006 三星 硬盘 小李 昌泰科技
7 1007 双敏 显卡 小李 昌泰科技
8 1008 英特尔 cpu 小李 昌泰科技
9 1009 双敏 主板 小李 昌泰科技
10 1010 金士顿 内存 NULL 昌泰科技
我要得到如下结果
用户 Cpu 主板 硬盘 内存 显卡
小黄 1003速龙 1002七彩虹 1004西数160G 1001黑金刚 null
小李 1008英特尔 1009双敏 1006三星 1005威刚 1007双敏
商家信息不用显示,用户为空的物品也不用显示,转换的列 固定 就为 用户 CPu 主板硬盘 内存 显卡 这5列
数据库查询横转列 行业数据
------解决方案--------------------
with tb(Id,编号,型号,类型,用户,商家)as(
select 1,1001,'黑金刚','内存','小黄','畅能科技' union
select 2,1002,'七彩虹','主板','小黄','畅能科技' union
select 3,1003,'速龙','cpu','小黄','畅能科技' union
select 4,1004,'西数160G','硬盘','小黄','畅能科技' union
select 5,1005,'威刚','内存','小李','昌泰科技' union
select 6,1006,'三星','硬盘','小李','昌泰科技' union
select 7,1007,'双敏','显卡','小李','昌泰科技' union
select 8,1008,'英特尔','cpu','小李','昌泰科技' union
select 9,1009,'双敏','主板','小李','昌泰科技' union
select 10,1010,'金士顿','内存',NULL,'昌泰科技')
select 用户,
MAX(case when 类型='CPU' then convert(varchar,编号)+型号 else null end) CPU,
MAX(case when 类型='主板' then convert(varchar,编号)+型号 else null end) 主板,
MAX(case when 类型='硬盘' then convert(varchar,编号)+型号 else null end) 硬盘,
MAX(case when 类型='内存' then convert(varchar,编号)+型号 else null end) 内存,