竖表->横表
select a.user_ohr_id sso, max(decode(a.change_type_id,1, b.change_type_desc,'')) t1, max(decode(a.change_type_id,2, b.change_type_desc,'')) t2, max(decode(a.change_type_id,3, b.change_type_desc,'')) t3, max(decode(a.change_type_id,4, b.change_type_desc,'')) t4, max(decode(a.change_type_id,5, b.change_type_desc,'')) t5, max(decode(a.change_type_id,6, b.change_type_desc,'')) t6, max(decode(a.change_type_id,7, b.change_type_desc,'')) t7 from occr_user_changetype a ,occr_change_type b where a.change_type_id = b.change_type_id group by a.user_ohr_id
横表->竖表
select change_type_id,change_type_desc from occr_change_type
union all
select change_type_id,change_type_detail from occr_change_type
order by change_type_id
another way:(complex)
Create table test (name char(10),km char(10),cj int)
go
insert test values('张三','语文',80)
insert test values('张三','数学',86)
insert test values('张三','英语',75)
insert test values('李四','语文',78)
insert test values('李四','数学',85)
insert test values('李四','英语',78)
想变成
姓名 语文 数学 英语
张三 80 86 75
李四 78 85 78
declare @sql varchar(8000)
set @sql = 'select name'
select @sql = @sql + ',sum(case km when '''+km+''' then cj end) ['+km+']'
from (select distinct km from test) as a
select @sql = @sql+' from test group by name'
exec(@sql)
drop table test
drop table table1
go
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/106285/viewspace-1011730/ ,如需转载,请注明出处,否则将追究法律责任。