我有两个包含数据的表格,虽然我已经看到很多关于如何用一个表格做我想做的事情的例子(即使在这里也是如此),但是我不知道如何用多个表格做到这一点使用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
答案 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