2017-02-28 65 views
2

當前我有一個包含3個主要維度的事務列表:Keys,Time_Index和Cumulative_Amount。對於按時間索引的SQL表,添加行以填充缺失的時間索引

Keys  Time_Index  Cumulative_Amount 
100   1   103 
100   3   222 
101   2   101 

我想「填充所有Time_Index」。在這種情況下,雖然在時間2時鍵100沒有發生任何事情,但我想填充它。結果應該是如下面(最大時間指數= 3):

Keys  Time_Index  Cumulative_Amount 
100   1   103 
100   2   103 
100   3   222 
101   2   101 
101   3   101 

注意,我不填充時間1鍵101,因爲其鍵101存在的最早時間是時間2.我填充從它的每個關鍵最早的存在,直到max_time_index = 3

回答

0

我會首先產生的KeysTime_Index所有可能組合的列表,然後通常RIGHT/LEFT OUTER JOIN在這裏你可以爲NULL做的條件。類似這樣的:

with t as 
(
    select distinct x = a.number, y = b.number 
    from master..[spt_values] a 
    cross join 
    master..[spt_values] b 
    where a.number between 1 and 4 
    and b.number between 100 and 103 
) 
select 
    case when x.Cumulative_Amount is null then -1 else x.Cumulative_Amount end, t.Keys, t.Time_Index 
from dbo.myTable x 
right join t on t.Keys = x.Keys