-1

I want to get the lastest order by order_date and detail

Here is my query and the result:

select distinct
ORDER.user_id,
order_amount,
detail,
order_date

From User innner join ORDER on User.user_id = ORDER.user_id

where order_date > '1/1/2011'
and ORDER.user_id = '2123'

user_id    order_amount    detail     order_date
2123       5               case       2012-04-07 00:00:00.000
2123       4               pack       2019-11-16 00:00:00.000
2123       2               pack       2018-12-23 00:00:00.000
2123       1               case       2019-05-25 00:00:00.000
2123       6               case       2018-04-15 00:00:00.000

Below is what I desire:

user_id    order_amount    detail     order_date
2123       4               pack       2019-11-16 00:00:00.000
2123       1               case       2019-05-25 00:00:00.000

Any help would be greatly appreciated.

Milan Pk
  • 77
  • 5

1 Answers1

1

With NOT EXISTS:

select t.* from tablename t
where 
  t.order_date > '2011-01-01' 
  and 
  t.user_id = '2123'
  and 
  not exists (
    select 1 from tablename
    where user_id = t.user_id and detail = t.detail and order_date > t.order_date
  )

See the demo.
Results:

> user_id | order_amount | detail | order_date         
> ------: | -----------: | :----- | :------------------
>    2123 |            4 | pack   | 16/11/2019 00:00:00
>    2123 |            1 | case   | 25/05/2019 00:00:00
forpas
  • 160,666
  • 10
  • 38
  • 76