Sql 获取与聚合函数结果关联的属性
我有一个用于存储数组元素的表,这些元素属于一个框架,每个元素都有一个日期和一个注释(以及其他元素)。大概是这样的:Sql 获取与聚合函数结果关联的属性,sql,sql-server,Sql,Sql Server,我有一个用于存储数组元素的表,这些元素属于一个框架,每个元素都有一个日期和一个注释(以及其他元素)。大概是这样的: 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
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\u框架
、array\u id
和indx
是表的主键。我需要得到一个给定帧的数组列表,每个数组都有包含最新日期的元素的索引和注释。例如,如果我查询master\u 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
然而,检索
注释
(或数组_indx
)比我想象的要困难得多。有可能吗?如果可能,如何实现?假设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;
假设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;
您想要哪个数组索引?如果有人使用最小值或最大值,您需要哪个数组索引?如果有人使用最小值或最大值。