日期:2014-05-17  浏览次数:20524 次

Sql 怎样将多列转换成一行多列

sql数据表 tb 如下

FID      CerName   StarTime     EndTime
53       社保      2000-01-01   2003-01-01
53       银行      2000-02-01   2002-02-01

怎样转换成

FID    社保开始时间  社保结束时间  银行开始时间    银行结束时间
53      2000-01-01   2003-01-0     2000-02-01      2002-02-01


请假下各位:这样怎样进行转换成?

------解决方案--------------------
引用:
但是想做动态的,该怎样处理呢?

declare @sql nvarchar(max)
select @sql=isnull(@sql,'')+',max(case when CerName='''+CerName+''' then starttime else null end)['+CerName+'开始时间],max(case when CerName='''+CerName+''' then EndTime else null end)['+CerName+'结束时间]' from (select distinct CerName from tb)t
exec('select fid'+@sql+' from tb group by fid')