SQLServer對單個字段去重並顯示整行信息的方法


單個字段去重並選出每個分組類別里面的最大值對應的整行信息:

用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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM