如何通过SQL语法获取分区中的最大行数?

时间:2018-12-07 15:13:46

标签: sql sql-server tsql

在不同日期的“文件名”列中有重复的文件名记录。我需要选择文件名的最大-行号及其对应的日期。

with cte as
(
select [FileName], ProcessDate,
ROW_NUMBER() over (partition by [FileName] order by [FileName]) RowNumber 
from  StagingTable    
)
select * from cte 
order by rownumber desc

enter image description here

3 个答案:

答案 0 :(得分:1)

这不是要解决您的问题,但我想这就是您想要的。这将为您提供带有一个SELECT的最后一个ProcessDate:

SELECT 
    [FileName]
    ,MAX (ProcessDate) AS LastProcessDate
    ,COUNT (*) FileNameOccurence
FROM StagingTable
GROUP BY [FileName]

如果是这样,请不要使嵌套查询变得更加复杂。

答案 1 :(得分:0)

with cte as
(
select [FileName], ProcessDate,
ROW_NUMBER() over (partition by [FileName] order by [FileName] desc) RowNumber 
from  StagingTable    
)
select * from cte 
where RowNumber = 1

答案 2 :(得分:0)

假设您实际上想要的是最新的文件,其中有多个具有相同文件名的文件-您不一定需要CTE-子查询就可以了

 select *
 from(
 select [FileName], ProcessDate, ROW_NUMBER() over (partition by [FileName] order by 
 ProcessDate desc) RN 
 from  StagingTable
 )files
 where RN = 1