Sql 如何仅获取记录的最大行数行?

Sql 如何仅获取记录的最大行数行?,sql,tsql,Sql,Tsql,下面的查询结果如下所示 如何仅获取记录的最大行数行?我已经对20000多条记录运行了这个查询,以识别重复,并获得最近的日期及其处理的行数 select [FileName], ProcessDate, ROW_NUMBER() over (partition by [FileName] order by [FileName] desc) RowNumber from StagingTable where filename = 'abc.txt' 你在找过滤器吗 select s.* fro

下面的查询结果如下所示

如何仅获取记录的最大行数行?我已经对20000多条记录运行了这个查询,以识别重复,并获得最近的日期及其处理的行数

select [FileName], ProcessDate,
ROW_NUMBER() over (partition by [FileName] order by [FileName] desc) RowNumber 
from  StagingTable
where filename = 'abc.txt'

你在找过滤器吗

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;

你在找过滤器吗

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]

根据您的逻辑,似乎没有最大行数。或者行编号是否与ProcessDate以外的其他字段关联

就我理解你的问题而言,我只会使用以下查询:

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

您的查询有一个错误:在OrderBy中,您编写了文件名,但我猜您使用的是日期

您可以在行数列上双击:

将版本排序作为 选择 [文件名], ProcessDate, 按[FileName]分区的行数按[ProcessDate]ASC文件版本排序, 按[FileName]分区上的行数按[ProcessDate]顺序描述文件版本 从StaginTable 选择文件名、处理日期、文件版本 从版本排序 其中FileVersionInv=1 -文件名='abc.txt'
您的查询有一个错误:在OrderBy中,您编写了文件名,但我猜您使用的是日期

您可以在行数列上双击:

将版本排序作为 选择 [文件名], ProcessDate, 按[FileName]分区的行数按[ProcessDate]ASC文件版本排序, 按[FileName]分区上的行数按[ProcessDate]顺序描述文件版本 从StaginTable 选择文件名、处理日期、文件版本 从版本排序 其中FileVersionInv=1 -文件名='abc.txt'

那么你想得到什么样的回报,1还是4?不是很清楚你在问什么。对于每个文件,我只需要得到最近的日期和行号。记录的最大行数。不是记录的所有行。为什么要使用行号,只需使用最大值?行号为我提供了totalcount进程我需要多少次,该文件已处理,以及该文件最近的处理日期。那么,作为回报,您希望得到什么数字,1或4?不是很清楚你在问什么。对于每个文件,我只需要得到最近的日期和行号。记录的最大行数。不是记录的所有行。为什么要使用行号,只需使用最大值?行号提供了totalcount进程我需要多少次,该文件已处理,以及该文件的最新处理日期是什么时候..抱歉。。但这不是我想要的。。我可以用cte。。语法来获取此。。预期结果。。我需要有最上面一行的值。。包括值4.是。。请总计数非常有用。。这就是我们所期望的语法没有给出正确的结果。。当我们删除文件名参数时..抱歉。。但这不是我想要的。。我可以用cte。。语法来获取此。。预期结果。。我需要有最上面一行的值。。包括值4.是。。请总计数非常有用。。这就是我们所期望的语法没有给出正确的结果。。删除filename参数时..如果我将原始查询的结果填充到临时表并运行您的查询。。我正在得到结果。但行数计数为3。选择[FileName],MAX[ProcessDate]为[ProcessDate],MaxRowNumber FROM T GROUP BY[FileName]-这适用于meIf,如果我将原始查询的结果填充到临时表并运行查询。。我正在得到结果。但是rownumber count的值为3.SELECT[FileName],MAX[ProcessDate]为[ProcessDate],MaxRowNumber FROM T GROUP BY[FileName]-这对我很有用