2016-01-19 70 views
1

我的問題是,我想啓動一個數據庫查詢應該給我每個序列號的最後(maxDate)條目。
(我工作的一個微軟數據庫 - > MS SQL請)我想我的Microsoft數據庫(MS SQL)中的最後一個條目,但得到重複

第一個畫面顯示數據庫中的所有條目:

enter image description here 後,我已經運行下面的代碼我得到這樣的輸出:

string aQuerry = @" SELECT * 
    FROM (
      SELECT SerialNumber, MAX(Date) as MaxDate 
      FROM eBox_Deploy 
      GROUP BY SerialNumber 
    ) r 
INNER JOIN eBox_Deploy t 
ON t.SerialNumber = r.SerialNumber AND t.Date = r.MaxDate"; 
     using (var db = new eBoxDataContext()) 
     { 
      list.AddRange(db.ExecuteQuery<eBox_Deploy>(bQuerry)); 
     } 

照片後:

enter image description here

現在我的問題是我有重複,因爲它們已經存在於數據庫中。 不同不能很好地工作,因爲這些都有不同的Id。

我怎樣才能讓他們離開?

回答

2

你可以使用窗口功能:

SELECT * 
FROM (SELECT *, 
     rn = ROW_NUMBER() OVER(PARTITION BY [SerialNumber] ORDER BY [Date] DESC) 
    FROM eBox_Deploy) AS sub 
WHERE rn = 1; 

如果[Date]不是唯一的內SerialNumber組使用RANK()取得聯繫。

+1

非常感謝你,它似乎工作得很好:)! – DrDorianXD

相關問題