使用 CTE 在 sql 中获取第一行作为每个组的结果

问题描述 投票:0回答:1

我正在使用这个SQL查询,我想获取每组的第一条记录。我已经使用了

ROW_NUMBER()
功能,但它仍然显示每个组的所有记录。谁能指导我正确的方向来实现我的输出?

WITH CTE_SUM AS 
(
    SELECT 
        FA.AuditIntID, FA.FileIntID, 
        MAX(FA.AuditDate) AS Auditdaa,  
        ROW_NUMBER() OVER (PARTITION BY FA.AuditIntID ORDER BY FA.AuditIntID DESC) AS rn
    FROM  
        Document.FileAudit FA WITH (NOLOCK)
    WHERE
        FA.FirmIntID = 1 
    GROUP BY 
        FA.AuditIntID, FA.FileIntID
)
SELECT 
    CS.AuditIntID, MDC.EntityIntID, CS.Auditdaa,
    CS.fileintid, cs.rn 
FROM
    CTE_SUM CS WITH (NOLOCK)
INNER JOIN  
    [Document].[Metadata] MDC ON MDC.FileIntID = CS.FileIntID 
WHERE 
    rn = 1
ORDER BY
    MDC.EntityIntID,CS.Auditdaa DESC

下面是我的示例表数据,在表中我只想检索每组的第一行。例如,在表中,您可以看到我希望在结果中看到的突出显示的行(带有黄色背景),它们是我的输出每组的第一行。我可以看到每个

row_number
都显示相同的值。

sql database group-by row-number
1个回答
0
投票

在您的 CTE 中,您按 FA.AuditDate 进行分组。在我看来你不想这样做。

© www.soinside.com 2019 - 2024. All rights reserved.