7

所以,我有两个表,帐户和发票,它们由帐户表中的主键链接,即。account.key 和 invoice.key。

我想为每个帐户的第二个最新发票日期选择 account.accountnumber、invoice.invoicedate、invoice.invoiceamount。

有任何想法吗?

因此,要选择所有发票及其对应的帐号:

select a.accountnumber, i.invoicedate, i.invoiceamount
from account a
join invoice i on (a.key = i.key)

并从整个发票表中选择第二张最新发票:

select MAX(invoicedate) from INVOICE i where invoicedate NOT IN (SELECT MAX(invoicedate) from i

但是,如何从发票表中获取每个帐户的第二张最新发票以及帐户表中的帐号?

提前致谢。

4

2 回答 2

6

通过使用ROW_NUMBER()窗口函数...

select accountnumber, invoicedate, invoiceamount 
from 
(
    select a.accountnumber, i.invoicedate, i.invoiceamount, 
        row_number() over (partition by a.accountnumber order by invoicedate desc) rn
    from account a 
        join invoice i on a.[key] = i.[key]
) v
where rn = 2
于 2012-10-05T10:42:22.743 回答
-1

尝试使用这个:

select a.accountnumber, i.invoicedate, i.invoiceamount 
from account a 
join invoice i on a.[key] = i.[key]
and i.invoicedate in
(select max(invoicedate) as secondmaxdate from invoice where invoicedate not in
(select max(invoicedate) as maxdate from invoice group by [key])
group by [key])
于 2012-10-05T11:26:16.657 回答