SQL 行列转换简单示例

SQLSERVER 2005 以后提供了新的方式进行行列转换,下面是一个实例供参考:

if object_id('tb') is not null drop table tbTest

go

create table tbTest(产品 varchar(10),季度 varchar(10),销售额 int)

insert into tbTest values('产品1','一季度',1000)
insert into tbTest values('产品1','二季度',2000)
insert into tbTest values('产品1','三季度',3000)
insert into tbTest values('产品1','四季度',2000)

insert into tbTest values('产品2','一季度',1200)
insert into tbTest values('产品2','二季度',2400)
insert into tbTest values('产品2','三季度',1000)
insert into tbTest values('产品2','四季度',1500)

insert into tbTest values('产品3','一季度',2000)
insert into tbTest values('产品3','二季度',2500)
insert into tbTest values('产品3','三季度',2000)
insert into tbTest values('产品3','四季度',3000)

go

select * from tbTest

go

--sqlserver 2000 或者其它数据库
select 产品 ,
 SUM(case 季度 when '一季度' then 销售额 else 0 end) as 一季度,
 SUM(case 季度 when '二季度' then 销售额 else 0 end) as 二季度,
 SUM(case 季度 when '三季度' then 销售额 else 0 end) as 三季度,
 SUM(case 季度 when '四季度' then 销售额 else 0 end) as 四季度
from tbTest
group by 产品

go

--SqlServer 2005 以上支持
select * from tbTest 
  pivot( sum(销售额) for 季度 in (一季度,二季度,三季度,四季度)) a 
  
go
  

执行上面的查询,都可以得到下面的结果:

产品    一季度    二季度    三季度    四季度
产品1    1000    2000    3000    2000
产品2    1200    2400    1000    1500
产品3    2000    2500    2000    3000

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值