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
對不起,這個蹩腳的標題。
我需要的是爲每個用戶獲取MAX(PaymentDue)
,以獲取名爲Ef Fee
的發票。然後,我需要根據所選行選擇PaymentMade
值(通常是其他一些列)。能夠獲得行的PurchaseId
會很好,但不是必需的。我過去的做法是使用多個CTE。抓住UserId, InvoiceName, MAX(PaymentDue)
,然後匹配所有3來獲取所需的其他數據,但我想知道是否有更好/更快的方法來實現這一點,而不必使用多個cte。根據最大值從行中獲取其他數據
期望的結果將是第3行,因爲它是最近的PaymentDue
。
編輯:
PurchaseId UserID InvoiceName PaymentDue PaymentMade
3 1 EF Fee 2016-07-26 NULL
謝謝!這看起來像我需要的一樣工作! – Doolius