sql server 2005 中的列置换函数用法(pivot 字段)

本文展示了一个使用SQL进行行列转换(Pivot)及求和(sum)的具体实例,演示了如何将对象(object)字段中的不同类别转为列,并计算每个类别对应的分数(score)之和,同时还展示了如何计算每个名称(name)下所有类别的总分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

行列置换(2000中的交叉表.2005中的处理方法.及相关合计字段列的处理.)

declare @t table(name varchar(10),object varchar(10),score int)
insert into @t select 'a','EN',89
union all select 'a','CH',78
union all select 'a','HO',99
union all select 'b','EN',34
union all select 'b','CH',88
union all select 'b','HO',66

select ta.*,tb.[sum] from
(
    
select * from @t
    pivot
        (
sum(score)
         
for object in ([EN],[CH],[HO])
        )
    
as pt
)ta 
left join
(
    
select name,[sum]=sum(score)
    
from @t
    
group by name
)tb
on ta.name=tb.name

/*
name       EN          CH          HO          sum
---------- ----------- ----------- ----------- -----------
a          89          78          99          266
b          34          88          66          188

(2 行受影响)
*/
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值