2010-09-16 49 views
1

我有一个用于存储数组元素的表,这些元素属于一个框架,每个元素都有日期和注释(以及其他元素)。事情是这样的:获取属性与聚合函数的结果关联

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_idindx是表的主键。我需要获得给定帧数组的列表,每个数组都有包含最新日期的元素的索引和注释。所以对于例如,如果我查询了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)已经证明比我想象的更困难。它有可能吗?如果可能的话,怎么样?

+0

?如果有人使用min或max。 – Kashif 2010-09-16 10:10:50

回答

1

假设Array_Index你想要的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; 
+0

哇,令人印象深刻,谢谢 – Sambatyon 2010-09-16 10:22:17