Sql server 在SQL Server中从按键分组的顶部选择中查找最大值

Sql server 在SQL Server中从按键分组的顶部选择中查找最大值,sql-server,Sql Server,为愚蠢的标题道歉。我不知道该如何描述这个问题 我在SQL Server中有一个具有这种结构的表 ID varchar(15) ProdDate datetime Value double 对于每个ID,可以有数百行,每行都有自己的ProdDate。ID和ProdDate构成表的唯一键 我需要做的是根据前12个样本,按ProdDate升序查找每个ID的最大值 另一种说法。对于每个ID,我需要找到该ID的12个

为愚蠢的标题道歉。我不知道该如何描述这个问题

我在SQL Server中有一个具有这种结构的表

ID                varchar(15)    
ProdDate          datetime    
Value             double
对于每个ID,可以有数百行,每行都有自己的ProdDate。ID和ProdDate构成表的唯一键

我需要做的是根据前12个样本,按ProdDate升序查找每个ID的最大值

另一种说法。对于每个ID,我需要找到该ID的12个最早日期。每个ID的采样将从不同的日期开始,然后找到这12个样本的最大值


你知道如何在没有多个查询和临时表的情况下做到这一点吗?

你可以使用一个通用的表表达式和行号来逻辑地定义每个Id的前12个,然后是最大值。。。按此分组


我的问题有点偏离了,我需要12个月内最大值的样品的生产日期。这是一个多层次的处理。我将查看您的解决方案,看看可以做些什么来进一步修改它。@user1753352-12个月或12行?
;WITH T
     AS (SELECT *,
                ROW_NUMBER() OVER (PARTITION BY Id ORDER BY ProdDate) AS RN
         FROM   YourTable)
SELECT Id,
       MAX(Value) AS Value
FROM   T
WHERE  RN <= 12
GROUP  BY Id