查找最近的日期,Firebird dBase

时间:2012-12-07 22:54:52

标签: sql date firebird

我有两个包含数据的表格,虽然我已经看到很多关于如何用一个表格做我想做的事情的例子(即使在这里也是如此),但是我不知道如何用多个表格做到这一点使用Firebird的表(可能与大多数人认为只是简单的SQL没有那么多不同),但是,我不太了解它的情况。

无论如何 -

我有以下代码:

select cqd.customer_price, cqd.entry_date, pnm.pn
  from cq_detail cqd, parts_master pnm
 where cqd.pnm_auto_key = pnm.pnm_auto_key
 order by cqd.entry_date desc

它返回正确的数据,如下所示:

CUSTOMER_PRICE, ENTRY_DATE, PN
------------------------------
1,052.00        08.01.2012, 1938-12
1,054.00        08.02.2012, 1938-12
1,050.00        08.08.2012, 1938-12
1,051.00        08.04.2012, 1938-12
5,052.00        08.20.2012, 9999-19
7,054.00        08.07.2012, 9999-19
3,030.00        08.12.2012, 9999-19
6,021.00        08.04.2012, 9999-19

其中,我非常满意。不幸的是,想要结果的权力只是:

CUSTOMER_PRICE, ENTRY_DATE, PN
------------------------------
1,050.00        08.08.2012, 1938-12
5,052.00        08.20.2012, 9999-19

SQL不是我正常的工作,我们正常的SQL人员已经出局了,我正在尝试在他离开时处理一些更简单的项目。

所以,我想,简而言之,我需要返回每个特定PN的最新日期。我怀疑我需要一个嵌套选择或某种形式的JOIN,这些日子有点超出我的范围。

提前致谢。

JB

1 个答案:

答案 0 :(得分:2)

select a.pn,b.entry_date,c.pn from
(select  pnm.pn as pn,max(cqd.entry_date) as max_entry_date
  from cq_detail as cqd, parts_master pnm
 where cqd.pnm_auto_key = pnm.pnm_auto_key
group by pnm.pn) a

inner join 

(select cqd.customer_price as customer_price, cqd.entry_date as entry_date, pnm.pn as pn
  from cq_detail cqd, parts_master pnm
 where cqd.pnm_auto_key = pnm.pnm_auto_key) as b 
on a.pn=b.pn and a.max_entry_date=b.entry_date
order by b.entry_date