Sql server 从属于时间范围的表中获取最大值及其对应的3列

Sql server 从属于时间范围的表中获取最大值及其对应的3列,sql-server,sql-server-2012,group-by,max,aggregate-functions,Sql Server,Sql Server 2012,Group By,Max,Aggregate Functions,我在SQLServer中有一个表,每隔15分钟有一个数据值和时间戳。2015年1月至2016年6月。每设置96个间隔(15分钟间隔,因此24小时内96个间隔)有一个当天(24小时)最高的数据值。我还有另外3个栏目,叫做a、b、c。我需要找到每96个区间集的最大值以及它们各自的A、B、C值。我尝试使用max和group by,但无法获得确切的数字。有人能帮我一下吗 我已经发布了数据外观的快照。因此,在本例中,您看到的是1月2日,我需要整个96个间隔的最大值KW。更重要的是,我需要相应最大值的a、b

我在SQLServer中有一个表,每隔15分钟有一个数据值和时间戳。2015年1月至2016年6月。每设置96个间隔(15分钟间隔,因此24小时内96个间隔)有一个当天(24小时)最高的数据值。我还有另外3个栏目,叫做a、b、c。我需要找到每96个区间集的最大值以及它们各自的A、B、C值。我尝试使用max和group by,但无法获得确切的数字。有人能帮我一下吗


我已经发布了数据外观的快照。因此,在本例中,您看到的是1月2日,我需要整个96个间隔的最大值KW。更重要的是,我需要相应最大值的a、b、c阶段值。

我假设您每天都需要最大值。为此,您可以使用
行编号()

select t.*
from (select t.*,
             row_number() over (partition by cast(timestamp as date)
                                order by onedatavalue desc
                               ) as seqnum
      from t
     ) t
where seqnum = 1;

假设您希望每天获得最大值,您可以在子查询中使用max,如下所示:

select * from DATATABLE as D 
where KW = (Select MAX(KW) from DATATABLE 
            where DAY(KEY_POINT_DTTM_15MIN) = DAY(D.KEY_POINT_DTTM_15MIN)) 

我猜您使用的是max(),但您忘记了DAY()函数。

您可以发布示例数据和您尝试的内容吗?