SqlServer 动态行转列

 

有如下数据: (不一定只有这几个类别)

    姓名    科目        成绩        

    a        subject1    83

    a        subject2    74

    a        subject3    93

    b        subject1    70

    b        subject2    80

    b        subject3    90

  ....................

 

现要得到这样的数据

姓名    subject1    subject2    subject3  .......

a        83            74        93

b        70            80        90

 

可以使用如下sql达到效果

    declare @v_sql varchar(8000)

   set @v_sql= 'select 姓名 '

   select @v_sql=@v_sql+' , max(case 科目 when '''+ subject + ''' then 分数 else 0 end ) '+subject from ( select distinct 科目 as subject from table )  a 

    set @v_sql =' from table group by 姓名 '

    exec(@v_sql)

转载于:https://www.cnblogs.com/xinyus/p/3368649.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值