6.Examine the structure of the SHIPMENTS table:

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.
E.Only the second query executes successfully and gives the correct result.
答案:C
解析:这里考察的是decode和case的用法,decode不能这样使用,因此只留下了B,C选项,题目中说的是如果SHIPMENT_DATE比PO_DATE晚了1个月的话,那么每天20$
所以MONTHS_BETWEEN (shipment_date,po_date)>1这个是正确的,shipment_date - po_date这个是相差的天数,因此正确
MONTHS_BETWEEN(date1,date2) : 相等结果为0,date1大于date2为正,小于为负

SELECT MONTHS_BETWEEN
       (TO_DATE('02-02-1995','MM-DD-YYYY'),
        TO_DATE('01-01-1995','MM-DD-YYYY') ) "Months"
  FROM DUAL;

    Months
----------
1.03225806

SELECT product_id,
       DECODE (warehouse_id, 1, 'Southlake', 
                             2, 'San Francisco', 
                             3, 'New Jersey', 
                             4, 'Seattle',
                                'Non domestic') "Location" 
  FROM inventories
  WHERE product_id < 1775
  ORDER BY product_id, "Location";


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值