代码之家  ›  专栏  ›  技术社区  ›  xorpower

在SQL Server的列中查找最高值

  •  -4
  • xorpower  · 技术社区  · 6 年前

    我有一个SQL Server数据库,它当前以以下格式显示数据

    enter image description here

    如您所见,每个项目都有不同的版本号存储在数据库中。我要做的是在报告中显示具有最新版本号及其相关日期的项目。因此,我使用了行数和分区方式,但不知何故,我没有得到结果,特别是当我将CTE和分区逻辑放入存储过程时。

    我想要的数据格式如下;

    enter image description here

    3 回复  |  直到 6 年前
        1
  •  0
  •   beercohol    6 年前

    关联子查询通常具有良好的性能:

    select t.*
    from t
    where t.version = (select MAX(t2.version) from t t2 where t2.projectname = t.projectname);
    

    尤其是,您希望 (projectname, version) 以获得最佳性能。

        2
  •  1
  •   Yogesh Sharma    6 年前

    我会用 subquery :

    select t.*
    from table t
    where version# = (select max(t1.version#) 
                      from table t1 
                      where t1.projectname = t.projectname
                      );
    

    row_number() 功能:

    select top (1) with ties *
    from table t
    order by row_number() over (partition by projectname order by version# desc);
    
        3
  •  -2
  •   squillman Johnny Fitz    6 年前
    SELECT p.projectname, p.versionno,p.startdata,p.enddate 
    FROM project p 
    INNER JOIN 
    ( SELECT projectname, MAX(startdate) MaxDate 
    FROM project GROUP BY projectname ) 
    Dates ON p.projectname = Dates.projectname
     AND p.startdate = Dates.MaxDate