2016-04-21 161 views
1

我是新來的stackoverflow,我有一個問題,需要你的幫助。我有類似下面的表格:SQL Server 2008 - 如何用其他行中的數據填充空白行(在空白行之前或之後)

ID, Date, Type 
1 1/1/16 
1 2/1/16 
1 3/1/16 Apple 
1 4/1/16 
1 5/1/16 
1 6/1/16 
2 1/1/16 Pear   
2 2/1/16   
2 3/1/16 Apple  
2 4/1/16   
2 5/1/16 Banana  
2 6/1/16   
3 1/1/16 
3 2/1/16 
3 3/1/16 
3 4/1/16 
3 5/1/16 
3 6/1/16 Pear 

我想要做的是:

ID, Date, Type 
1 1/1/16 Apple 
1 2/1/16 Apple 
1 3/1/16 Apple 
1 4/1/16 Apple 
1 5/1/16 Apple 
1 6/1/16 Apple 
2 1/1/16 Pear   
2 2/1/16 Pear   
2 3/1/16 Apple  
2 4/1/16 Apple  
2 5/1/16 Banana  
2 6/1/16 Banana  
3 1/1/16 Pear 
3 2/1/16 Pear 
3 3/1/16 Pear 
3 4/1/16 Pear 
3 5/1/16 Pear 
3 6/1/16 Pear 

任何幫助將不勝感激。預先感謝你們。

回答

0

你可以做到這一點Using APPLY
嘗試此查詢:

SELECT t.id 
, t.date 
, t.type 
, IsNull(t.[type], z.[type]) AS NewType 
FROM t 
OUTER APPLY 
(SELECT x.[type] 
    FROM t AS x 
    WHERE x.date = 
    IsNull(
     (SELECT Max(p.date) AS pd FROM t AS p WHERE p.id = t.id AND p.date < t.date AND p.[type] Is Not Null) --Prev Not Null 
    , (SELECT Min(n.date) AS nd FROM t AS n WHERE n.id = t.id AND n.date > t.date AND n.[type] Is Not Null) --Next Not Null 
    ) AND x.id = t.id 
) z 
+0

謝謝!有用! – KKKZoo