CREATE TABLE #TmpTbl
(
PurchaseId INT
,UserID INT
,InvoiceName VARCHAR(20)
,PaymentDue DATE
,PaymentMade DATE
)
INSERT INTO #TmpTbl
SELECT 1
,1
,'Ef Fee'
,'2016-01-01'
,'2016-01-02'
UNION ALL
SELECT 2
,1
,'Monthly Pmt'
,'2016-05-01'
,'2016-05-02'
UNION ALL
SELECT 3
,1
,'Ef Fee'
,'2016-07-26'
,NULL
PurchaseId UserID InvoiceName PaymentDue PaymentMade
1 1 EF Fee 2016-01-01 2016-01-02
2 1 Monthly Pmt 2016-05-01 2016-05-02
3 1 EF Fee 2016-07-26 NULL
Sorry für den beschissenen Titel.
Was ich brauche, ist die MAX(PaymentDue)
für jeden Benutzer zu erhalten, für Rechnungen, die Ef Fee
genannt werden. Dann muss ich den PaymentMade
Wert (und normalerweise einige andere Spalten) basierend auf welcher Zeile ausgewählt wird. Es wäre schön, in der Lage zu sein, die PurchaseId
für die Zeile zu bekommen, aber nicht erforderlich. Die Art, wie ich das in der Vergangenheit gemacht habe, ist mit mehreren CTE's. Ergreifen Sie die UserId, InvoiceName, MAX(PaymentDue)
dann wieder auf alle 3, um die anderen benötigten Daten zu greifen, aber ich frage mich, ob es eine bessere/schnellere Möglichkeit gibt, dies zu erreichen, ohne mehrere Cte's zu verwenden.Weitere Daten aus Zeile basierend auf Max. Wert
Gewünschtes Ergebnis wäre Zeile 3, weil es das neueste PaymentDue
ist.
EDIT:
PurchaseId UserID InvoiceName PaymentDue PaymentMade
3 1 EF Fee 2016-07-26 NULL
Danke! Das scheint so zu funktionieren, wie ich es brauche! – Doolius