我有两个表,我正在与。我们称他们为“客户”和“点数”。SQL滚动总计到某个日期
积分榜如下:
Account Year M01 M02 M03 M04 M05 M06 M07 M08 M09 M10 M11 M12
123 2011 10 0 0 0 10 0 10 0 0 0 0 10
123 2012 0 0 0 0 10 0 0 10 10 10 10 20
123 2013 5 0 0 0 0 0 0 0 0 0 0 0
但这些点上连续12个月的工作。计算当前客户的积分非常简单,但挑战在于不再活跃的客户。说客户123在2013年1月变得不活跃,我们只想计算2013年2月12日到2013年1月。这是其他表,客户,进来,让我们简化和说,它看起来就像这样:
Account End Date
123 20130105
现在,我想要做的就是创建一个计算出每个客户都有点的量查询。 (目前的12个月内活跃的客户,过去12个月中,他们活跃谁是不再有效客户。)
这里有一些更多的信息:
- 我运行SQL Server 2008的
- 这些表格已经提供给我这样,我不能修改它们。
- 积极的客户是一个终止日期为99991231(Dec 31 9999)的人
- 积分表仅填充客户是活跃客户的年数。也就是说,有人成为2009年2月份的活跃客户,如果他们2009年7月不活跃,他们的2009年2月至7月才会进入活跃状态,但2009年没有排名,因为他们不是客户那时候。 Jan & 2009年8月至12月将显示0。
- 此外,只有客户在当年获得任何积分时才创建记录。如果客户一年获得0分,则不会有记录。
- 对于边界案例,如果您进入一个月的第一天,那么将计算该月份。例如,假设今天是2013年4月1日,这意味着我们总结5月12日 - 4月13日。
这是一个相当复杂的问题。如果有什么我可以更好地解释,请让我知道。谢谢!
非常感谢! – Julian 2013-03-26 12:41:39