【发布时间】:2015-07-24 11:56:16
【问题描述】:
我正在加入表格。我只想根据日期字段从联接表中返回一条记录。
这是我迄今为止所做的一个简化的小提琴: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 |
【问题讨论】:
-
请使用示例数据和所需结果编辑您的问题。
-
还要注意你的标签是
oracle,但你的SQL Fiddle是SQL Server。区别在于TOP 1在oracle中不存在。 -
我是 SQL Fiddle 的新手,在选择 Oracle 时无法构建架构。下次我会研究它。
标签: sql oracle greatest-n-per-group