我正在尝试输出艺术名称、价格和新价格。 新价格基于艺术品的购买日期。 如果是在 2010 年之前,则增长 10%,如果是在 2010 年,则增长 5%。 我正在使用案例陈述,但似乎无法超越我所处的位置。 我不断在第 00905 行收到 ORA-3 缺少关键字错误。
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;
知道我错过了什么吗?
您不应该将 CASE price 和 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;
我建议把它写成:
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>
表单即可。 - 无需在
SELECT
中newprice
两次. - 我不建议将
TRUNC()
逻辑进行两次。 为了保持一致性,请将case
作为trunc()
的参数。