我有一个具有以下结构的数据库表:
ID ActiveDate ActiveQtr InactiveQtr Value
------------------------------------------------------------------
1 2004-06-30 2004-06-30 2004-12-31 10
1 2004-08-10 2004-09-30 2004-12-31 200
2 2004-12-31 2004-12-31 2005-03-31 150
2 2005-01-20 2005-03-31 2005-12-31 60
2 2005-03-31 2005-03-31 2005-12-31 75
3 2005-04-15 2005-06-30 2007-06-30 100
2 2005-06-30 2005-06-30 2006-06-30 80
ActiveDate 可以是任何日期。ActiveQtr 是前滚到下一个季度结束日期的 ActiveDate。InactiveQtr 是大于或等于 ActiveQtr 的某个季度结束日期。InactiveQtr 不一定对应于 ID 的最新条目的日期,并且 ActiveQtr 和 InactiveQtr 之间的差异在条目之间不一致。
我想要的是,对于每个 ActiveQtr,找到与该季度仍处于活动状态的每个 ID 的最新条目相对应的所有值的总和。
对于此示例,结果应如下所示
ActiveQtr SUM(Value)
-------------------------
2004-06-30 10
2004-09-30 200 // use more recent entry for ID=1
2004-12-31 350 // entry from ID=1 on 2004-08-10 is still valid
2005-03-31 75 // entry from ID=1 not valid anymore; also only use more recent entry from ID=2
2005-06-30 180
我尝试按 ActiveQtr 进行分组,但这不起作用,因为我丢失了在该季度仍处于活动状态的条目。我也不知道如何处理一个 ID 有多个条目在特定季度处于活动状态并且我需要选择具有 MAX(ActiveDate) 的条目的情况。