我正在尝试输出艺术品名称,价格和新价格。新价格取决于收购艺术品的日期。如果是在2010年之前比增加10%,如果是在2010年则增加了5%。我使用了一个案例陈述,但似乎无法超越我所处的位置。我一直在第3行收到ORA-00905关键字错误。
SELECT artname, price, newprice,
CASE Price
WHEN DtAcquired < '01-JAN-2010' THEN TRUC(price*1.10, 2)
ELSE TRUNC(price*1.05, 2)
END AS newprice
FROM Arts;
我不知道我错过了什么?
答案 0 :(得分:2)
您不应该使用CASE价格和WHEN一起使用条件,但在这种情况下直接在WHEN上有案例,例如:
SELECT artname, price,
CASE
WHEN DtAcquired < '01-JAN-2010'
THEN TRUNC(price*1.10, 2)
ELSE TRUNC(price*1.05, 2)
END AS newprice
FROM Arts;
答案 1 :(得分:0)
我建议将其写成:
SELECT artname, price,
TRUNC(CASE WHEN DtAcquired < DATE '2010-01-01' THEN price*1.10 ELSE price*1.05
END, 2) as newprice
FROM Arts;
一些注意事项:
case
表达式。只需使用when <condition>
表单。newprice
无需SELECT
两次。TRUNC()
逻辑。为保持一致性,请将case
参数设为trunc()
。