首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

,行转列

2012-09-16 
请教高手,在线等。行转列。现有格式:NameyearvalueA20091A20102A20113B200911B201022B201033转化为Name20092

请教高手,在线等。行转列。
现有格式:
Name year value
A 2009 1
A 2010 2
A 2011 3
B 2009 11
B 2010 22
B 2010 33 

转化为
Name 2009 2010 2011
A 1 2 3
B 11 22 33 


怎么做?请教高手了。 可以用Linq 也可以用代码。最好是用LInq。

另外主要问题是 2009 2010 2011 是不定的。 是会变化的。所以不能写死。
所以要做成动态的。



[解决办法]
http://topic.csdn.net/u/20110620/15/bec4adee-ebd6-40c7-88f6-250050f79680.html

看这个帖子中我的回复。
[解决办法]
SQL Server中实现
http://blog.csdn.net/taomanman/article/details/6684013
[解决办法]
http://topic.csdn.net/u/20110318/14/5f7f3f4e-05a8-41f1-9116-a5813a758af2.html
[解决办法]
C# 实现DataTable的行转列 .

http://blog.csdn.net/sandy945/article/details/5336560

DataList 实现 行转列 .

http://blog.csdn.net/sandy945/article/details/4068760
[解决办法]
sql可以不?

SQL code
create table #temp(Name varchar(20),year varchar(20),value varchar(20))insert into #tempselect 'A','2009','1' union allselect 'A','2010','2' union allselect 'A','2011','3' union allselect 'B','2009','11' union allselect 'B','2010','22' union allselect 'B','2011','33'declare @sql varchar(500)set @sql = 'select Name'select @sql=@sql+',max(case year when '''+[year]+''' then value end) ['+[year]+']'from (select distinct [year] from #temp) as aset @sql = @sql +' from #temp group by Name'exec(@sql)
[解决办法]
探讨
加一句对Name列的排序 该加到哪里咯? 一楼高手。数据已经出来了。

热点排行