Sql server 根据WHERE条件检索上次更新的记录

Sql server 根据WHERE条件检索上次更新的记录,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一个“User\u Relation”表,其中包含关系,最后更新的列。它包含一堆基于父、母、子关系的记录 我需要使用查询一次检索所有关系的最新记录。无需使用游标 这是我想要的输出 检查以下查询,希望这对您有所帮助: SELECT relationfamily, MAX(lastmodify) FROM User_Relation WHERE mainuser = 'sivabrahma' GROUP BY relationfamily 与Cte一起使用: ;WITH cte

我有一个“User\u Relation”表,其中包含关系,最后更新的列。它包含一堆基于父、母、子关系的记录

我需要使用查询一次检索所有关系的最新记录。无需使用游标

这是我想要的输出


检查以下查询,希望这对您有所帮助:

SELECT relationfamily, MAX(lastmodify)
FROM User_Relation
WHERE mainuser = 'sivabrahma'
GROUP BY relationfamily
与Cte一起使用:

;WITH cte
      AS (SELECT *,
                 Row_number()
                   OVER(
                     partition BY relationfamily
                     ORDER BY lastmodify DESC) AS result
          FROM   User_Relation)
 SELECT relationfamily,
        lastmodify
 FROM   cte
 WHERE  result = 1 

发布样本数据和所需输出从该表中,我需要每个关系的最后更新记录尝试此@Nazeer_hanne请澄清您期望的输出或发布样本输出您需要什么?询问每个关系也是如此。可能这不会给出预期的输出@pareshJ@mohan111:我使用了GROUP BY,我想它会根据每个关系的最长日期为我分组。@Nazeer_hanne:请检查输出,如果它符合您的预期结果,您可以向上投票我的答案。@Paresh,但我需要将所有列都放在一行中,而不是选定的列。请再次查看表。我已编辑了我的表。我使用窗口功能解决了此问题。感谢您的指导…仅使用代码块并不能提供一个好的答案。请添加说明。是的,这与您的窗口功能配合使用。我可以一次获取每一行。谢谢。。。