create table ta([对象] varchar(5),[属性名] varchar(10), [值] varchar(20))
insert ta select '人', '姓名', '张三'
union all select '人','爱好', '音乐'
union all select '人', '身份证', '431112198907'
union all select '班级', '班级名', '培训1班'
union all select '班级', '班级性质', '成人'
declare @sql varchar(4000)
select @sql=isnull(@sql+',','')+quotename([属性名])+'= max(case [属性名] when '+quotename([属性名],'''')+
' then [值] end) '
from ta
group by [属性名]
set @sql='select [对象],'+@sql+' from ta group by [对象]'
exec(@sql)
对象 爱好 班级名 班级性质 身份证 姓名
----- -------------------- -------------------- -------------------- -------------------- --------------------
班级 NULL 培训1班 成人 NULL NULL
人 音乐 NULL NULL 431112198907 张三
警告: 聚合或其他 SET 操作消除了空值。
(2 行受影响)