请教各位高手一个问题,
在SQL SERVER 2005环境中,现有如下表结果
Id Class Name Content Date
1 A 活动1 内容1 时间1
2 A 活动1 内容1 时间1
3 A 活动1 内容1 时间1
1 B 活动2 内容2 时间2
2 B 活动2 内容2 时间2
1 C 活动3 内容3 时间3 以上表中,Class 类别 只能为 A 、B、C三类。
现希望通过pivot或者其他方法,实现行列转换,得到以下结果
ID A-Name A-Content A-Date B-Name B-Content B-Date C-Name C-Content C-Date
1 活动1 内容1 时间1 活动2 内容2 时间2 活动3 内容3 时间3
2 活动1 内容1 时间1 活动2 内容2 时间2 null null null
3 活动1 内容1 时间1 null null null null null null有没有一个简单的方法?谢谢Pivot
在SQL SERVER 2005环境中,现有如下表结果
Id Class Name Content Date
1 A 活动1 内容1 时间1
2 A 活动1 内容1 时间1
3 A 活动1 内容1 时间1
1 B 活动2 内容2 时间2
2 B 活动2 内容2 时间2
1 C 活动3 内容3 时间3 以上表中,Class 类别 只能为 A 、B、C三类。
现希望通过pivot或者其他方法,实现行列转换,得到以下结果
ID A-Name A-Content A-Date B-Name B-Content B-Date C-Name C-Content C-Date
1 活动1 内容1 时间1 活动2 内容2 时间2 活动3 内容3 时间3
2 活动1 内容1 时间1 活动2 内容2 时间2 null null null
3 活动1 内容1 时间1 null null null null null null有没有一个简单的方法?谢谢Pivot
select @sql=isnull(@sql,'')+',max(case when class='''+class+''' then name else null end)['+class+'-name]'
+',max(case when class='''+class+''' then [content] else null end)['+class+'-content]'
+',max(case when class='''+class+''' then Date else null end)['+class+'-Date]' from (select distinct class from tb)t
exec('select id'+@sql+' from tb group by id')