[英]How to get only the max row number row of record?
您在寻找过滤器吗?
select s.*
from (select [FileName], ProcessDate,
ROW_NUMBER() over (partition by [FileName] order by ProcessDate desc) as RowNumber
from StagingTable
where filename = 'abc.txt'
) s
where RowNumber = 1;
请注意, ORDER BY
已更改。
如果还需要总数,则添加,然后作为附加列:
select s.*
from (select [FileName], ProcessDate,
count(*) over (partition by filename) as cnt,
ROW_NUMBER() over (partition by [FileName] order by ProcessDate desc) as RowNumber
from StagingTable
where filename = 'abc.txt'
) s
where RowNumber = 1;
根据您的逻辑,似乎没有最大的行数。 还是行号绑定到ProcessDate
以外的其他字段?
据我了解您的问题,我将使用以下查询:
SELECT [FileName], MAX([ProcessDate]) AS [ProcessDate], COUNT(*) AS [Count]
FROM [StagingTable]
GROUP BY [FileName]
您的查询有一个错误:在OrderBy
您编写了FileName,但是我想您使用的是日期。
您可以在ROW_NUMBER()列上加倍:
WITH VersionSorting AS (
select
[FileName],
ProcessDate,
ROW_NUMBER() over (partition by [FileName] order by [ProcessDate] ASC) FileVersion,
ROW_NUMBER() over (partition by [FileName] order by [ProcessDate] DESC) FileVersionInv
from StagingTable
)
SELECT FileName, ProcessDate, FileVersion
FROM VersionSorting
WHERE FileVersionInv = 1
-- AND FileName = 'abc.txt'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.