
构造数据并测试
SQL> create table courses (stname varchar(30),cname varchar(30),score int);SQL> insert into courses values('苏华','语文',90);SQL> insert into courses values('苏华','数学',95);SQL> insert into courses values('苏华','英语',96);SQL> insert into courses values('于倩','语文',87);SQL> insert into courses values('于倩','数学',96);SQL> insert into courses values('于倩','英语',91);SQL> insert into courses values('谢文龙','语文',83);SQL> insert into courses values('谢文龙','数学',98);SQL> insert into courses values('谢文龙','英语',89);SQL> commit;

行转列方法
方法1:使用case when子句
select stname,sum(case when cname = '语文' THEN score ELSE 0 END) AS "语文",sum(case when cname = '数学' THEN score ELSE 0 END) AS "数学",sum(case when cname = '英语' THEN score ELSE 0 END) AS "英语"from coursesgroup by stname;

SQL> select * from coursespivot(sum(score)for cname in('语文','数学','英语'))as courses;

以上就是达梦数据库行转列的方法。
想要了解更多往期干货,可访问页面最下方#达梦技术干货攻略#合集或下方相关分享。在此邀请更多学员参与“达梦技术干货投稿活动”,稿件获选后将在达梦“干货分享”专栏进行发布,欢迎来稿!
【干货】达梦数据库日志监控与分析(二)
【干货】SQL优化案例-索引的回表与过滤
【开班】达梦数据库工程师认证课程2025年6月
作者:林夕
文章转载自达梦E学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




