【发布时间】:2015-10-29 15:48:51
【问题描述】:
我有下表:
;with data as (
select '508325' as [customer], 'G61' as [demo_given],
cast('2015-1-1' as date) as [date_of_demo]
union all select '508325', 'G61', cast('2015-3-1' as date)
union all select '508325', 'G61',cast('2015-3-15' as date)
union all select '508325', 'G61',cast('2015-3-16' as date)
union all select '508325', 'G61',cast('2015-3-17' as date)
union all select '508325', 'G61',cast('2015-6-1' as date)
union all select '508325', 'G61',cast('2015-8-1' as date)
union all select '508325', 'G61',cast('2015-9-1' as date)
union all select '508325', 'G61',cast('2015-9-1' as date)
union all select '508325', 'G61',cast('2015-12-1' as date)
)
每个客户在 4 个月内只能提供 3 个演示。 第一个时期从给出的第一个演示开始计算,并在 4 个月后结束。
如果该期间的演示数量超过 3,我需要演示的日期 4 以及该 4 个月期间的后期。
(在本例中为2015-3-16 和2015-3-17)
下一个时期从前四个月后的第一个演示日期开始。所以我需要计算2015-6-1 到2015-9-30 期间的演示数量,并返回该期间给出的最终“剩余”演示的日期。
我该怎么做呢?
【问题讨论】:
标签: sql-server tsql sql-server-2012 gaps-and-islands