java中纵表转横表_纵表与横表互转实例

1.纵表转横表:

纵表结构:Table1

d76027b1d029584daa911b630b5763cd.png

转换后的横表结构:

84cb89ad48df621d369cef1f8f6f7be7.png

Sql示例代码:

select username,

sum(case Course when '语文' then Grade else 0 end) as 语文,

sum(case Course when '数学' then Grade else 0 end) as 数学,

sum(case Course when '英语' then Grade else 0 end) as 英语

from Table1

group by username

2、横表转纵表:

横表结构: TableA

ID      姓名    语文        数学       英语1       张三     80         90         70

2       李四     90         85         95

3       王五     88         75         90转换后的纵表结构:

ID     姓名     科目     成绩1       张三     语文     80

2       张三     数学     90

3       张三     英语     70

4       李四     语文     90

5       李四     数学     80

6       李四     英语     99

7       王五     语文     85

8       王五     数学     96

9       王五     英语     88

SQL示例代码:

SELECT 姓名,'语文' AS 科目,语文 AS 成绩 FROM TableA UNION ALL

SELECT 姓名,'数学' AS 科目,数学 AS 成绩 FROM TableA UNION ALL

SELECT 姓名,'英语' AS 科目,英语 AS 成绩 FROM TableA ORDER BY 姓名,科目 DESC;

case 变量表达式              --对某个‘变量表达式’进行判断

when 值                      --当‘变量表达式’是某个‘值’时

then 返回值表达式            --返回‘返回值表达式’值

[when...

then...

.....]                       --可以进行多次判断

[else 其他情况返回值表达式]  --不符合所有when后面的就是其他情况了

end                          --结束

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值