2

我有两张包含数据的表格,虽然我已经看到了很多关于如何只用一张表格做我想做的事的例子(即使在 SO 上也是如此),但我不太清楚如何使用 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

4

1 回答 1

3
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
于 2012-12-08T05:48:53.727 回答