0

以下のデータがあります。

注文

order_id    order_name        order_date         order_status 

1            iphone        20130102 13:20:00        cancelled
1            blackberry    20130102 13:00:00        cancelled
1            ipad          20130102 13:00:00        cancelled

person_id     person_name       order_id

1             harshini          1

20130102 13:00:00 から 2013 13:20:00 までの order_date に基づいてクエリを実行すると、以下のデータを取得したいと考えています。これは最後のキャンセル注文を意味します。

person_name     order_name   order_date     

harshini        blackberry   20130102 13:00:00
4

2 に答える 2

0

これで試してみてください...
select p.person_name ,o.order_name,o.order_status from order_1 o,person p where orderdate=(select max(orderdate) from order_1)

于 2013-03-04T13:12:26.987 に答える
0
select person_name, order_name, order_date 
from(
  select 
   o.order_id, o.order_name, o.order_date, o.order_status,
   p.person_id, p.person_name, p.order_id,
   row_number() over (/*partition by person_id*/ order by order_date desc) as rnk
  from order o join person p on (o.order_id = p.order_id)
  where o.order_status = 'canceled'
   and o.order_date between 
       to_date('20130102 13:00:00','yyyymmdd hh24:mi:ss') and
       to_date('20130102 13:00:00','yyyymmdd hh24:mi:ss')
)
where rnk = 1;

ただし、コメントを参照してください。設計にいくつかの問題があります。

于 2013-03-04T13:40:36.957 に答える