我正在處理一個設計不良的數據庫,只要它們具有不同的唯一標識符,它不會限制重複行。T-SQL:如何從組中獲取最後修改的行
在其中一個表中,給定的用戶可以具有該屬性的屬性和值。通常情況下,一個用戶只會有一次屬性,但由於設計不佳,我在表格中得到了很多重複項,現在我需要清理這些混亂。這是由於CRM軟件並不總是在我們修改員工檔案時檢查該行是否存在,而是創建了一堆具有重複值的新行。
下面的查詢返回的重複值:
SELECT ua.ID AS LineID
,ua.Modified AS LineLastModifiedDate
,u.FullName AS EmployeeName
,a.Name AS AttributeName
,ua.value AS AttributeValue
FROM UserAttributes AS ua
INNER JOIN Users AS u ON ua.userid = u.id
INNER JOIN Attributes AS a ON ua.AttributeID = a.ID
WHERE EXISTS (
SELECT NULL
FROM UserAttributes as ua2
WHERE ua2.UserID = ua.UserID
AND ua2.AttributeID = ua.AttributeID
AND ua2.ID != ua.ID
)
而產生的結果是:
LineID LineLastModifiedDate EmployeeName AttributeName AttributeValue
------ ----------------------- ------------- --------------- ---------------
15 2016-01-01 Employee1 EmployeeNumber 15
19 2016-07-20 Employee1 EmployeeNumber 15
35 2016-01-01 Employee2 EmployeeSex M
96 2016-07-20 Employee2 EmployeeSex M
21 2016-03-03 Employee1 SickDays 3
99 2016-07-10 Employee1 SickDays 5
我需要完成從這個查詢開始是:同樣EmployeeName的的ForEach分組和AttributeName,給我最後一個修改後的行,期望如下結果:
LineID LineLastModifiedDate EmployeeName AttributeName AttributeValue
------ ----------------------- ------------- --------------- ---------------
19 2016-07-20 Employee1 EmployeeNumber 15
96 2016-07-20 Employee2 EmployeeSex M
99 2016-07-10 Employee1 SickDays 5
如何修改我的查詢來完成此操作?
謝謝
-M
這實際上工作得很好。謝謝 ! –