drc*_*c15 5 sql oracle greatest-n-per-group
我正在加入桌子。我只想根据日期字段从连接表返回一条记录。
这是我迄今为止所做的简化的小提琴:http://sqlfiddle.com/#!3/be0cdd/ 2
我的桌子:
  CUSTOMER
| CustomerID |
--------------
| 1          |
  PURCHASE
| PurchaseID | CustomerID | ProductID | CreateDate | ArchiveFlag |
------------------------------------------------------------------
| 1          | 1          | 443       | 01-FEB-15  | F           |
| 2          | 1          | 551       | 01-MAR-15  | F           |
| 3          | 1          | 151       | 01-JAN-15  | F           |
| 4          | 1          | 654       | 01-MAY-15  | T           |
| 5          | 1          | 345       | 01-APR-15  | T           |
这是查询本身:
select *
from customer c
join purchase p
on c.customerid = p.customerid
and p.archiveflag = 'F';
我只想为每个客户返回未存档的最新购买(在本例中为购买 ID 2)。
理想输出:
| CustomerID | PurchaseID | CustomerID_2 | ProductID | CreateDate | ArchiveFlag |
|--------------------------------------------------------------------------------
| 1          | 2          | 1            | 551       | 01-MAR-15  | F           |
Muk*_*ude -1
您可以在查询中使用 top 和 order by ,如下所示
select Top 1 *
from customer c
join purchase p
on c.customerid = p.customerid
and p.archiveflag = 'F' 
Order by p.CreateDate Desc;
| 归档时间: | 
 | 
| 查看次数: | 7312 次 | 
| 最近记录: |