ITPub博客

首页 > Linux操作系统 > Linux操作系统 > sql server 行列转换

sql server 行列转换

Linux操作系统 作者:tf1008 时间:2013-11-08 17:32:32 0 删除 编辑
代码
-----------创建产品产量表
create table tb2(年份 varchar(10) , 产品 varchar(10) , 产量 int)
insert into tb2 values('2009' , '毛巾' , 74)
insert into tb2 values('2009' , '西装' , 83)
insert into tb2 values('2009' , '皮鞋' , 93)
insert into tb2 values('2008' , '西裤' , 74)
insert into tb2 values('2008' , 'T恤' , 84)
insert into tb2 values('2008' , '皮鞋' , 94)
go
---------创建学生成绩表
create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
insert into tb values('张三' , '语文' , 74)
insert into tb values('张三' , '数学' , 83)
insert into tb values('张三' , '物理' , 93)
insert into tb values('李四' , '语文' , 74)
insert into tb values('李四' , '数学' , 84)
insert into tb values('李四' , '物理' , 94)
go


--------普通转换
select 姓名 as 姓名 ,
  
max(case 课程 when '语文' then 分数 else 0 end) 语文,
  
max(case 课程 when '数学' then 分数 else 0 end) 数学,
  
max(case 课程 when '物理' then 分数 else 0 end) 物理
from tb
group by 姓名


---动态sql语句转换
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from tb) as a
set @sql = @sql + ' from tb group by 姓名'
exec(@sql)



SELECT * FROM tb
SELECT * FROM tb2

select 产品 as 产品,
 
max(case 年份 when '2009' then 产量 else 0 end'2009'
from tb2
group by 产品

declare @sql varchar(8000)
declare @thisyear varchar(20)
declare @yesteryear varchar(20)
declare @yyesteryear varchar(20)
set @thisyear = DATEPART (year,getdate())
set @yesteryear =(DATEPART (year,getdate())-1)
set @yyesteryear = (DATEPART (year,getdate())-2)
set @sql='select 产品 as 产品'
set @sql = @sql+',case 年份 when '''+@thisyear+''' then 产量 else 0 end['+'this'+']'
set @sql = @sql+',case 年份 when '''+@yesteryear+''' then 产量 else 0 end['+@yesteryear+']'
set @sql = @sql+',case 年份 when '''+@yyesteryear+''' then 产量 else 0 end ['+@yyesteryear+']'
select @sql=@sql
from (select 年份  as b from tb2) as a
set @sql = @sql +'from tb2 group by 产品,年份,产量'
exec(@sql)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14558067/viewspace-776137/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-11-08

  • 博文量
    7
  • 访问量
    20714