首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么在sql 将查找出来的数据变成横向显示

2012-09-06 
如何在sql 将查找出来的数据变成横向显示?如何将查找出来的数据:namecount课桌式100分组式360剧院式200董

如何在sql 将查找出来的数据变成横向显示?
如何将查找出来的数据:

name count
课桌式100
分组式360
剧院式200
董事会150
U型100
宴会型150

变成横向显示:
课桌式分组式 剧院式 董事会 U型 宴会型
100 360 200 150 100 150



[解决办法]

SQL code
select  max(case name when '课桌式' then [count] else 0 end) as 课桌式,  max(case name when '分组式' then [count] else 0 end) as 分组式,....from   tb
[解决办法]
SQL code
create table test([name] varchar(10),[count] int)goinsert testselect '课桌式', 100 union allselect '分组式', 360 union allselect '剧院式', 200 union allselect '董事会', 150 union allselect 'U型', 100 union allselect '宴会型', 150select * from testdeclare @sql varchar(max)select @sql=isnull(@sql+',','')+' max(case when [name]='''+[name]+''' then [count] end) as '''+[name]+''''from(select [name] from test group by [name]) tprint @sqlexec('select '+@sql+' from test' )drop table test/*(6 row(s) affected)name       count---------- -----------课桌式        100分组式        360剧院式        200董事会        150U型         100宴会型        150(6 row(s) affected)U型          董事会         分组式         剧院式         课桌式         宴会型----------- ----------- ----------- ----------- ----------- -----------100         150         360         200         100         150(1 row(s) affected)*/
[解决办法]
SQL code
-- sql server 2000静态select  max(case name when '课桌式' then [count] else 0 end) as 课桌式,  max(case name when '分组式' then [count] else 0 end) as 分组式,  max(case name when '剧院式' then [count] else 0 end) as 剧院式,  max(case name when '董事会' then [count] else 0 end) as 董事会,  max(case name when 'U型' then [count] else 0 end) as U型 ,  max(case name when '宴会型'then [count] else 0 end) as 宴会型,from  tab--sql server 2000动态declare@sqlvarchar(8000)set @sql='select'select @sql=@sql+isnull(@sql+',','')+' max(case when [name]='''+[name]+''' then [count] end) as '''+[name]+''''set @sql=@sql+'from (select [name],[count] from tab group by [name]) 'exec(@sql)--sql  server 2005静态select * from  tab pivot(max(count)for name in(课桌式,分组式,剧院式,董事会,U型,宴会型))--sql server 2005动态declare@sqlvarchar(8000)set@sql=''  --初始化变量@sqlselect@sql=@sql+','+[name] from tab --变量多值赋值set@sql=stuff(@sql,1,1,'')--去掉首个','set@sql='select * from tb pivot (max(count) for name in ('+@sql+'))a'exec(@sql)
[解决办法]
SQL code
select * from (select * from test_three) apivot(max(coun) for name in(分组式,课桌式,剧院式,董事会)) b 

热点排行