【发布时间】:2018-12-25 10:43:47
【问题描述】:
这听起来像是一个简单的问题,但我就是找不到正确的方法。 给定简化表
with t as (
select ordernumber, orderdate, case when ordertype in (5,21) then 1 else 0 end is_restore , ordertype, row_number() over(order by orderdate) rn from
(
select to_date('29.08.08','DD.MM.YY') orderdate,'313' ordernumber, 1 as ordertype from dual union all
select to_date('13.03.15','DD.MM.YY') orderdate, '90/4/2' ordernumber, 5 as ordertype from dual
)
)
select * from t -- where clause should be here
对于每一行,is_restore 保证为 1 或 0。 如果表中有一行 is_restore=1 则选择该行的订单号、订单日期,仅此而已。 如果表中没有 is_restore=1 的行,则选择 rn=1 的行的 ordernumber,orderdate(保证表中存在 rn=1 的行) 鉴于上述要求,我需要在 where 子句中添加什么才能获得以下要求?
【问题讨论】: