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

获取与聚合函数的结果关联的属性

  •  1
  • Sambatyon  · 技术社区  · 15 年前

    我有一个用于存储数组元素的表,这个元素属于一个框架,每个元素都有一个日期和一个注释(在其他元素中)。像这样:

    MASTER_FRAME(K) ARRAY_ID(K) ARRAY_INDX(K)  DATE   COMMENT
                  1            1             1 27-08-2010   'List 1 Newer'
                  1            1             2 27-07-2010   'List 1 Older'
                  1            2             1 27-08-2010   'List 2 Newer'
                  1            2             2 27-07-2010   'List 2 Older'
    ...
    

    这个 master_frame ,的 array_id 以及 indx 是表的主键。我需要得到给定帧的数组列表,每个数组都有包含最新日期的元素的索引和注释。例如,如果我查询 master_frame = 1 我应该得到:

    ARRAY_ID DATE  COMMENT
           1 27-08-2010 'List 1 Newer'
           2 27-08-2010 'List 2 Newer'
    

    到目前为止,我可以通过查询获得我想要的大部分内容:

    SELECT array_id, MAX(date)
    FROM my_table
    WHERE master_frame = 1
    GROUP BY master_frame, array_id
    

    但是检索 comment (或 array_indx )比我想象的要困难。有可能吗?如果可能,怎么做?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Martin Smith    15 年前

    假设SQL Server 2005+

    ;WITH cte As
    (
    SELECT array_id, [date], comment,
    ROW_NUMBER() OVER (PARTITION BY array_id ORDER BY [date] DESC) AS RN
    FROM my_table
    WHERE master_frame = 1
    )
    
    SELECT array_id, [date], comment
    FROM cte 
    WHERE RN=1;