我有一個MS SQL Server的兩個表獲取最新的記錄,包括空
一個包含用戶信息
TBL_USER
UserID| Name | Mail |...many columns...|
------+--------------+---------- +------------------+
292 | John Smith | @@@@@@@@ | ... |
293 | Anna Bennet | @@@@@@@@ | ... |
294 | Mark Johnson | @@@@@@@@ | ... |
其他表是每個用戶的支付的登記冊,以UserID作爲我的TBL_USER表的外鍵
TBL_PAYMENT
UserID| PaymentID | Amount | PaymentDate |
------+-----------+----------------------+
292 | 782 | 378 | 02-17-2016 |
293 | 783 | 172 | 03-22-2016 |
292 | 784 | 395 | 03-28-2016 |
292 | 785 | 358 | 04-01-2016 |
293 | 786 | 826 | 05-07-2016 |
293 | 787 | 835 | 05-23-2016 |
我希望做的是一個查詢語句或存儲過程帶來了表了最新的支付每個用戶的,並在同一個結果表空或任何其他靜態值,當用戶沒有做出任何類似支付這
UserID| Name | PaymentID | Amount | PaymentDate |
------+--------------+---------- +--------+-------------+
292 | John Smith | 785 | 358 | 04-01-2016 |
293 | Anna Bennet | 786 | 786 | 05-07-2016 |
294 | Mark Johnson | NULL | NULL | NULL |
現在我有下面的語句,但這給了我最後一次付款每一個用戶的,只有當他們在真皮休閒包一個支付已經完成。我想在同一張表中報告一個缺失的報告。
SELECT
usr.UserID,
usr.UserName,
pay.PaymentID,
pay.Amount,
pay.PaymentDate
FROM TBL_USER usr
LEFT OUTER JOIN TBL_PAYMENT pay ON usr.UserID = pay.UserID
INNER JOIN (
SELECT UserID,MAX(PaymentDate) AS MAXDATE
FROM TBL_PAYMENT Group by UserID
) latest ON pay.UserID = latest.UserID AND pay.PaymentDate = latest.MAXDATE
任何人都可以幫我解決這個問題嗎?
可以爲同一用戶複製付款日期嗎? –
@ Gonzalo.-不,PaymentDate插入的服務器系統日期從「管理界面」以毫秒級精度調用,因此幾乎不可能有2個標識日期。 –