3
新年快樂!SQL - 刪除重複行但保留空行
問題
我正在寫一個存儲過程,需要在用戶ID清單,它應該返回每一個包含用戶ID 1個記錄:從
- 用戶詳細信息
User
表(名,姓等) - 最新修改的地址記錄來自
Address
表。如果沒有Address
記錄,那麼我們需要返回的地址字段NULL
(Address
,Postcode
等)從Country
表 - 國家信息(地區等)
現在我有以下的,這是正確地返回NULL對沒有詳細地址(最後一個記錄的截屏),但用戶ID具有多個地址的記錄,我有多個記錄返回,而不是最新的修改後的地址記錄:
SELECT
U.Id, U.FirstName, U.Surname, U.Email, U.DateOfBirth,
AD.AddressLine1, AD.AddressLine2, AD.AddressLine3,
AD.PostCode, AD.Nickname, AD.Phone, AD.Modified,
CNT.Name, CNT.Code,
a.MaxDate
FROM
@TableVariable AS List
LEFT JOIN
dbo.Users AS U ON List.Id = U.Id
LEFT JOIN
dbo.Addresses AS AD ON U.Id = AD.User_Id
LEFT JOIN
(SELECT
JA.User_Id, MAX(CONVERT(DATE,JA.Modified,10)) AS MaxDate
FROM dbo.Addresses AS JA
GROUP BY JA.User_Id) A ON (AD.User_Id = A.User_Id AND CONVERT(DATE,AD.Modified,10) = A.MaxDate)
LEFT JOIN
dbo.Countries AS CNT ON AD.Country_Id = CNT.Id
ORDER BY
AD.Modified DESC
這裏該運行以上結果集。正如你所看到的,我已經正確地得到了一個沒有地址(最後一條記錄)的用戶返回的記錄,但是當我需要1時,我得到了3條2108條記錄,包括最新修改的地址(AD.Modified)。
我使用SQL Server 2008的
這工作一種享受JamesZ - 謝謝。 – garfbradaz