oracle行转列

在写一些复杂的SQL的时候,经常需要使用到行变列的技巧,一些帐务系统的统计也经常会写到这样的SQL。主要用到了max、decode或nvl这些函数来达到目的。写下来让大家互相学习学习!下面是一个行变列的例子。 如表ROW2COLUMN2有以下数据: 名字 课程 分数 1 张三 语文 80 2 张三 数学 86 3 张三 英语 75 4 李四 语文 78 5 李四 数学 85 6 李四 英语 78 想变成下面记录: 名字 语文 数学 英语 1 李四 78 85 78 2 张三 80 86 75 ---------------------------------------------- CREATE TABLE ROW2COLUMN2(NAME_ VARCHAR2(20), CLASS VARCHAR2(50), SCORE NUMBER(3)); INSERT INTO ROW2COLUMN2 VALUES ('张三', '语文', 80); INSERT INTO ROW2COLUMN2 VALUES ('张三', '数学', 86); INSERT INTO ROW2COLUMN2 VALUES ('张三', '英语', 75); INSERT INTO ROW2COLUMN2 VALUES ('李四', '语文', 78); INSERT INTO ROW2COLUMN2 VALUES ('李四', '数学', 85); INSERT INTO ROW2COLUMN2 VALUES ('李四', '英语', 78); SELECT * FROM ROW2COLUMN2; SELECT NAME_, MAX(DECODE(CLASS, '语文', T.SCORE, 0)) 语文, MAX(DECODE(CLASS, '数学', T.SCORE, 0)) 数学, MAX(DECODE(CLASS, '英语', T.SCORE, 0)) 英语 FROM ROW2COLUMN2 T GROUP BY NAME_;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值