2012-10-05 11 views
7

का दूसरा उच्चतम मूल्य चुनें, इसलिए, मेरे पास दो टेबल, खाता और चालान हैं, वे खाता तालिका से प्राथमिक कुंजी से जुड़े हुए हैं यानी। account.key और invoice.key।प्रति विशिष्ट विदेशी कुंजी

मैं प्रत्येक खाते से दूसरे नवीनतम चालान के लिए खाता.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 

लेकिन यह कैसे मैं दूसरे नवीनतम मिलता है

तो सभी चालान और उनकी संगत खाता संख्या को चुनने के लिए चालान तालिका से खाता खाते के साथ चालान तालिका से प्रति खाता चालान?

अग्रिम धन्यवाद।

उत्तर

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 
-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]) 
+0

इतना ही नहीं जटिल खत्म हो गया है, यह अगर चालान शेयर दिनांकों काम नहीं करेगा। – podiluska

संबंधित मुद्दे