我正在使用这个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
都显示相同的值。
在您的 CTE 中,您按 FA.AuditDate 进行分组。在我看来你不想这样做。