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

不等记录数的行列转换,该如何处理

2012-01-16 
不等记录数的行列转换如何实现将表中的行变为列:表tab大类号小类号Aa1Aa2Aa2Bb1Cc1Cc2通过SQL语句实现如下

不等记录数的行列转换
如何实现将表中的行变为列:
表   tab
大类号小类号
Aa1
Aa2
Aa2
Bb1
Cc1
Cc2
通过SQL语句实现如下转换:
ABC
a1b1c1
a2c2
a2


[解决办法]
create table #aa (mx varchar(20),mi varchar(20))
insert into #aa
select 'A ', 'a1 ' union all
select 'A ', 'a2 ' union all
select 'A ', 'a3 ' union all
select 'B ', 'b1 ' union all
select 'C ', 'c1 ' union all
select 'C ', 'c2 '


select
max(case when mx= 'a ' then mi end) A,
max(case when mx= 'b ' then mi end) b,
max(case when mx= 'c ' then mi end) c
from
(select *,(select count(1) from #aa where a.mx=mx and a.mi> =mi) co from #aa a)a
group by co


A b c
-------------------- -------------------- --------------------
a1 b1 c1
a2 NULL c2
a3 NULL NULL

(所影响的行数为 3 行)

热点排行
Bad Request.