1Z0-051 QUESTION 6 CASE和DECODE用法
来源:互联网 发布:人工智能 智能交通 编辑:程序博客网 时间:2024/06/04 18:12
QUESTION 6
Examine the structure of the SHIPMENTS table:
name Null Type
PO_ID NOT NULL NUMBER(3)
PO_DATE NOT NULL DATE
SHIPMENT_DATE NOT NULL DATE
SHIPMENT_MODE VARCHAR2(30)
SHIPMENT_COST NUMBER(8,2)
You want to generate a report that displays the PO_ID and the penalty amount to be paid if the
SHIPMENT_DATE is later than one month from the PO_DATE. The penalty is $20 per day.
Evaluate the following two queries:SQL> SELECT po_id, CASE
WHEN MONTHS_BETWEEN (shipment_date,po_date)>1 THEN
TO_CHAR((shipment_date - po_date) * 20) ELSE 'No Penalty' END PENALTY
FROM shipments;
SQL>SELECT po_id, DECODE
(MONTHS_BETWEEN (po_date,shipment_date)>1,
TO_CHAR((shipment_date - po_date) * 20), 'No Penalty') PENALTY
FROM shipments;
Which statement is true regarding the above commands?
A. Both execute successfully and give correct results.
B. Only the first query executes successfully but gives a wrong result.
C. Only the first query executes successfully and gives the correct result.
D. Only the second query executes successfully but gives a wrong result.
Examine the structure of the SHIPMENTS table:
name Null Type
PO_ID NOT NULL NUMBER(3)
PO_DATE NOT NULL DATE
SHIPMENT_DATE NOT NULL DATE
SHIPMENT_MODE VARCHAR2(30)
SHIPMENT_COST NUMBER(8,2)
You want to generate a report that displays the PO_ID and the penalty amount to be paid if the
SHIPMENT_DATE is later than one month from the PO_DATE. The penalty is $20 per day.
Evaluate the following two queries:SQL> SELECT po_id, CASE
WHEN MONTHS_BETWEEN (shipment_date,po_date)>1 THEN
TO_CHAR((shipment_date - po_date) * 20) ELSE 'No Penalty' END PENALTY
FROM shipments;
SQL>SELECT po_id, DECODE
(MONTHS_BETWEEN (po_date,shipment_date)>1,
TO_CHAR((shipment_date - po_date) * 20), 'No Penalty') PENALTY
FROM shipments;
Which statement is true regarding the above commands?
A. Both execute successfully and give correct results.
B. Only the first query executes successfully but gives a wrong result.
C. Only the first query executes successfully and gives the correct result.
D. Only the second query executes successfully but gives a wrong result.
E. Only the second query executes successfully and gives the correct result.
答案:C
解析:
case的语法参考ORACLE官方文档:
http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/case_statement.htm
摘要如下:
SELECT job_id INTO jobid from employees WHERE employee_id = empid; CASE WHEN jobid = 'PU_CLERK' THEN sal_raise := .09; WHEN jobid = 'SH_CLERK' THEN sal_raise := .08; WHEN jobid = 'ST_CLERK' THEN sal_raise := .07; ELSE sal_raise := 0; END CASE;故,第一条语句执行成功,并返回正确结果。
decode的语法参考ORACLE官方文档:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm#SQLRF00631
摘要如下:
SELECT product_id, DECODE (warehouse_id, 1, 'Southlake', 2, 'San Francisco', 3, 'New Jersey', 4, 'Seattle', 'Non domestic') "Location of inventory" FROM inventories WHERE product_id < 1775;
故,第二句语法错误,无法执行。
具体如下:
SQL> --create tableSQL> create table shipments( 2 po_id number(3) not null, 3 po_date date not null, 4 shipment_date date not null, 5 shipment_mode varchar2(30), 6 shipment_cost number(8,2));表已创建。SQL> insert into shipments values(1,sysdate-2*365,sysdate,'1',23);已创建 1 行。SQL> insert into shipments values(2,sysdate-2,sysdate,'2',45);已创建 1 行。SQL> insert into shipments values(3,sysdate,sysdate,'3',67);已创建 1 行。SQL> select * from shipments; PO_ID PO_DATE SHIPMENT_DATE SHIPMENT_MODE---------- -------------- -------------- -----------------------------SHIPMENT_COST------------- 1 28-12月-11 27-12月-13 1 23 2 25-12月-13 27-12月-13 2 45 3 27-12月-13 27-12月-13 3 67SQL> SELECT po_id, CASE 2 WHEN MONTHS_BETWEEN (shipment_date,po_date)>1 THEN 3 TO_CHAR((shipment_date - po_date) * 20) ELSE 'No Penalty' END PEN 4 FROM shipments; PO_ID PENALTY---------- ---------------------------------------- 1 14600 2 No Penalty 3 No PenaltySQL> SELECT po_id, DECODE 2 (MONTHS_BETWEEN (po_date,shipment_date)>1, 3 TO_CHAR((shipment_date - po_date) * 20), 'No Penalty') PENALTY 4 FROM shipments;(MONTHS_BETWEEN (po_date,shipment_date)>1, *第 2 行出现错误:ORA-00907: 缺失右括号
0 0
- 1Z0-051 QUESTION 6 CASE和DECODE用法
- OCP-1Z0-051 第6题 case when和decode的用法
- 1Z0-051 QUESTION 7 ON和USING的用法
- OCP 1Z0 051 QUESTION NO: 6
- 1Z0-051 QUESTION 8 子查询和JION的用法
- 1Z0-051 QUESTION 35 Primary key和foreign key的用法
- 1Z0-051 QUESTION 9 关于INTERSECT的用法
- 1Z0-051 QUESTION 14 DISTINCT的用法
- 关于case用法和decode用法
- 1Z0-051 QUESTION 12 别名和INITCAP的运用
- case 和DECODE在oracle里用法
- case 和DECODE在oracle里用法
- oracle中case和decode的用法
- decode 和 case when 的用法
- OCP-1Z0-051 第101题 DECODE,COUNT,CASE WHEN,SUM的使用
- decode函数的作用 decode和case when用法对比
- OCP 1Z0 051 QUESTION NO: 1
- 1Z0-051 QUESTION 11 运算顺序
- iOS中使用Core Plot绘制统计图入门
- 将android程序设为启动器,并且开机自动启动
- 高性能 Socket 组件 HP-Socket v3.2.1-RC3 发布
- InstallShield 12集成Framework4.0
- xmpp学习笔记(一)
- 1Z0-051 QUESTION 6 CASE和DECODE用法
- 策略模式(Strategy Pattern)
- iOS Socket第三方开源类库 AsyncSocket
- 制作一个按标签首字母分类的WordPress标签页
- 门面模式(Facade Pattern)
- VMware下Ubuntu13.04 更改主机名
- linux usb mass storage class
- OCP-1Z0-051 第84题 CONCAT,RAPLACE,INITCAP,SUBSTR函数
- C语言头文件大全