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 |
Run Code Online (Sandbox Code Playgroud)
这是查询本身:
select *
from customer c
join purchase p
on c.customerid = p.customerid
and p.archiveflag = 'F';
Run Code Online (Sandbox Code Playgroud)
我只想为每个客户返回未存档的最新购买(在本例中为购买 ID 2)。
理想输出:
| CustomerID | PurchaseID | CustomerID_2 | ProductID | CreateDate | ArchiveFlag |
|--------------------------------------------------------------------------------
| 1 | 2 | 1 | 551 | 01-MAR-15 | F |
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7312 次 |
| 最近记录: |