單個字段去重並選出每個分組類別里面的最大值對應的整行信息:
用distinct進行去重時不能顯示整行的信息,對某些特殊的需求難以滿足。故在此總結了兩種對單個字段去重的SQL寫法:
1. Row_Number去重:
用row_number對每個分組內的值排序后按照順序標記序號,選擇每個分組中標記序號為1的即是排序最大的值:
Table: AuditItem
Column: Servername, Check_Date等
本例用Servername進行分組,用Check_Date進行排序,篩選出每個servername分組中時間最新的那一行的信息:
select * from (select *,row_number()over(partition by Servername order by Check_Date desc) Suquence from AuditItem) s where s.Suquence=1
2. Group by和Max寫法:
用group by進行分組,Max函數選出該分組里最新的時間Check_Date的值,然后用該值作為條件篩選出整行的信息:
select * from [dbo].[AuditItem] where Check_Date in (select Max(Check_Date) from AuditItem group by servername)