2 u011658370 u011658370 于 2016.03.23 09:24 提问

一道关于数据库的面试题,看着很简单,但我就是不会写。求指导

如果在oracle中如何写这SQL语句?

4个回答

bdmh
bdmh   Ds   Rxr 2016.03.23 09:33
已采纳
bdmh
bdmh   Ds   Rxr 2016.03.23 09:26

这就是竖表变横表,用case语法汇总,或者用PIVOT(sqlserver方法)

u011658370
u011658370 能否说详细点
一年多之前 回复
enpterexpress
enpterexpress   2016.03.23 10:39
haoxiaxia
haoxiaxia   2016.03.28 21:06

本人菜鸟一枚。以下是我想到的一种方法:

---行转列
create table tb(
name varchar(10),
subject varchar(10),
result int);

insert into tb values ('张三','语文',74);
insert into tb values ('张三','数学',83);
insert into tb values ('李四','语文',80);
insert into tb values ('李四','数学',86);

select * from tb;

-----输出格式如下----
姓名 语文 数学
张三 74 83
李四 80 86

select name,
sum(case when subject='语文' then result end )as 语文,
sum(case when subject='数学' then result end) as 数学
from tb
group by name
;

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!