用于汇总数据的SQL聚合/窗口函数

时间:2015-03-11 03:32:00

标签: sql sql-server sql-server-2014 window-functions

我想创建一个查询来执行以下操作,但我遇到了问题:

我有一个包含列的数据库表:

  • TestYear(int,例如2014)
  • 日期(日期,即某一年的日期集)
  • DailyWorstValue
  • RunningValue

主键是TestYear + Date

我想得到:

  • 按日期排序的最后RunningValue(即最终值)
  • MINIMUM WorstValue(即最差值)
  • Per TestYear

这基本上是每个TestYear的一行摘要。是否可以使用窗口函数执行此操作?非常感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

我不确定为什么你需要window函数才能执行此操作aggregate函数将为您完成这项工作

SELECT testyear, 
       MIN_DailyWorstValue = Min(dailyworstvalue), 
       RV.last_runningvalue 
FROM   db_table A 
       CROSS apply (SELECT TOP 1 Last_RunningValue= runningvalue 
                    FROM   db_table B 
                    WHERE  A.testyear = B.testyear 
                    ORDER  BY date DESC) RV 
GROUP  BY testyear, 
          RV.last_runningvalue