Sql server 在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个
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