一道SQL题目(Oracle)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道SQL题目(Oracle)相关的知识,希望对你有一定的参考价值。

在实际应用中,我们经常遇到需要转换数据的显示方式,比如将横表转为纵表,或将纵表转为横表的情况
请运用SQL实现一下数据转换:
(转换前):
select * from test;
GRADE_ID SUBJECT_NAME MAX_SCORE
1 语文 98
2 数学 95
2 政治 87
5 语文 97
5 数学 100
5 政治 92
(转换后):
年级 语文 数学 政治
一年级 98 0 0
二年级 0 95 87
五年级 97 100 92

select decode(t.grade_id,'1','一年级','2','二年级','3','三年级',4,'四年级',5,'五年级','未知年级') 年级,nvl(t.max_score,'0') 语文,nvl(tt.max_score,'0') 数学,nvl(ttt.max_score,'0') 政治 from (
select grade_id,subject_name,max_score from test where subject_name='语文'
) t
left join (
select grade_id,subject_name,max_score from test where subject_name='数学'
)tt on t.grade_id=tt.grade_id
left join (
select grade_id,subject_name,max_score from test where subject_name='政治'
)ttt on t.grade_id=ttt.grade_id
order by t.grade_id
参考技术A select (case when grade_id=1 then '一年级'
when grade_id=2 then '二年级'
when grade_id=5 then '五年级' end) as "年级",
(case when subject_name='语文' then max_score end) as "语文",
(case when subject_name='数学' then max_score end) as "数学",
(case when subject_name='政治' then max_score end) as "政治"
from test;

急求 解 一道oracle 数据库 数据查询入门基础题 数据操作方面

创建脚本文件loademp.sql,以交互方式向向my_employee表添加纪录。提示用户输入雇员的id, first_name, last_name, salary,
userid(由first_name的第一个字母及last_name的前7个字母组成)
my_employee这张表 有 id last_name first_name userid salary 这五列
是在sqlplus环境里运行
insert into my_employee
values (&id,'&last_name','&first_name',concat(substr('&&first_name'',1,1),substr('&&last_name'',1,7)),&salary);
我这么写的 但是有问题

参考技术A DECLARE
v_id INT;
v_last_name VARCHAR2(20);
v_first_name VARCHAR2(20);
v_userid CHAR(8);
v_salary NUMBER(6);
BEGIN
v_id:=&输入ID;
v_last_name:='&请输入last_name';
v_first_name:='&请输入first_name';
v_salary:='&请输入salary';
v_userid:=SUBSTR(v_first_name,1,1)||SUBSTR(v_last_name,1,7);
INSERT INTO my_employee VALUES(v_id,v_last_name,v_first_name,v_userid,v_salary);
dbms_output.put_line(v_id);
dbms_output.put_line(v_last_name);
dbms_output.put_line(v_first_name);
dbms_output.put_line(v_userid);
dbms_output.put_line(v_salary);
commit;
END;追问

是在sqlplus环境里运行
insert into my_employee
values (&id,'&last_name','&first_name',concat(substr('&&first_name'',1,1),substr('&&last_name'',1,7)),&salary);
我这么写的 但是有问题
哪里错了那 应该怎么改

追答

'&&first_name'和'&&last_name'不是变量,看成字符串来截取。

追问

哥们 您有qq么 我能详细的问您一下么

追答

有问题在Hi里留言吧,QQ几乎不用。

以上是关于一道SQL题目(Oracle)的主要内容,如果未能解决你的问题,请参考以下文章

一道Oracle的SQL语句编写题

急求 解 一道oracle 数据库 数据查询入门基础题 数据操作方面

oracle PL/SQL语句题目求教!

Oracle语法 及 SQL题目

Oracle sql 复习题目总结

Oracle数据库之数据增删改