Sql 如何仅获取记录的最大行数行?
下面的查询结果如下所示 如何仅获取记录的最大行数行?我已经对20000多条记录运行了这个查询,以识别重复,并获得最近的日期及其处理的行数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
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]-这对我很有用