java 处理sql行转列_sql server行转列的一种实现方法

对于有些业务来说,数据在表中的存储和其最终的表现恰好相当于把源表倒转,那么这个时候我们就碰到了如何把行转化为列的问题,为了简化问题,我们且看如下查询出来的数据,您不必关心表的设计以及sql语句:

源表如下:(表名为info)

f285dccd1e5f844b0224a4af7af3cbed.png

------------------------------------------------------------------------

select username,

语文=(case course when '语文' then gradeelse 0 end),

数学=(casecourse when '数学' thengrade else0 end),

政治=(casecourse when '政治' then grade else0end)

from info

看看我们的执行结果:

9ecad05a4d32917ee5d5f3c17b10428e.png

看到这后,我们都知道应该做什么了,进行分组,按姓名进行分组,并且对三门课程分别求和;

------------------------------------------------------------------------

目标结果:

6d743debacc2c158d109e5ec781d8e9c.png

SQL语句为:

select username,

语文=sum(case course when '语文' then grade else 0 end),

数学=sum(case course when '数学' then grade else 0 end),

政治=sum(case course when '政治' then grade else 0 end)

from info group by username

select username,

语文=sum(case course when '语文' then gradeelse 0 end),

数学=sum(casecourse when '数学' thengrade else0 end),

政治=sum(casecourse when '政治' then grade else0end)

from info

group by username

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值