2013-05-08 29 views
0

我有一個包含客戶,錨定日期(原始銷售日期),呼叫頻率(7,14或21天)的表。我需要使用客戶特定的錨定日期和頻率來創建未來通話記錄並將其添加到表格中,直到定義的結束日期。我使用SQL 2008創建未來呼叫Rercords SQL

+0

什麼樣的CTE的你已經嘗試過?你有數字表嗎? – HABO 2013-05-08 02:13:47

回答

0

這看起來像一個開始:

declare @Customers as Table (CustomerId Int Identity, AnchorDate Date, CallFrequency Int); 
insert into @Customers (AnchorDate, CallFrequency) values 
    ('20130101', 7), ('20130102', 14), ('20130103', 21), 
    ('20130104', 7), ('20130105', 14), ('20130106', 21), 
    ('20130107', 7), ('20130108', 14), ('20130109', 21); 
select * 
    from @Customers 

declare @EndDate as Date = '20131231'; 
declare @Today as Date = SysDateTime(); 

with FutureCalls as (
    select CustomerId, DateAdd(day, (DateDiff(day, AnchorDate, @Today)/CallFrequency + 1) * CallFrequency, AnchorDate) as CallDate, CallFrequency 
    from @Customers 
    union all 
    select CustomerId, DateAdd(day, CallFrequency, CallDate), CallFrequency 
    from FutureCalls 
    where DateAdd(day, CallFrequency, CallDate) <= @EndDate 
) 
    select * 
    from FutureCalls 
    order by CallDate, CustomerId 
    option (MaxRecursion 0) 
+0

這就是我所需要的只是在這裏和那裏的一些調整excaclty。 – 2013-05-08 12:57:52

+0

很高興幫助。您可以通過點擊旁邊的複選標記來接受答案,如果答案符合您的要求。請參閱[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 [FAQ](http://meta.stackexchange.com/questions/7931/faq-for-stack-exchange-sites)提供了大量其他信息。 – HABO 2013-05-08 15:33:18