2013-10-25 88 views
0

我需要從前一行中取值,直到它達到另一個新值。 LAG不起作用,因爲它只填充1行,根據訂單號,我可能有1到12行的任何地方。在值之間填充空行

ColumnA是我的行號,columnB是我需要填充的列,直到遇到下一個非空行。任何幫助非常感謝,因爲我沒有想法。

行會是這樣

Columna Columb ColumnC ColumnD 
12  Yarn Yellow Coarse 
13    Yellow Coarse 
14  Needles Size G Steel 
15    Size H Wood 
16    Size Y Wood 
17  Hooks Fish  Steel 
18    Whale Steel 
18    Dolphin Steel 
19    Mermaid Steel 

回答

0

特定領域是一個不間斷的序列..

Table 
A  B  C  D 
12  Yarn  Yellow Coarse 
13    Yellow Coarse 
14  Needles Size G Steel 
15    Size H Wood 
16    Size Y Wood 
17  Hooks Fish  Steel 
18    Whale Steel 
19    Dolphin Steel 
20    Mermaid Steel 

我的第一關吧

Select 
    T1.A 
    COALESCE(T2.A,T1.B) as B, 
    T1.C, 
    T1.D 

From 
    Table as T1 
    LEFT JOIN Table as T2 ON T2.A = T1.A -1 

新建答案

Select 
    T1.A 
    Coalesce(
     T1.B, 
     (
      Select top 1 B 
      FROM Table 
      WHERE A < T1.A 
      and B IS Not Null 
      ORDER BY A DESC 
     ) 
    ) as B, 
    T1.C, 
    T1.D 
FROM  
    Table as T1 
+0

再看一遍,我給出了一個不正確的答案。我會思考這一點。 – NoMoCouch

+0

選擇 T1.A 合併爲B( \t T1.B, \t(其中A = T1.A 和B不爲空 \t) 選擇乙 \t FROM表 ) T1.C, T1.D 從 作爲T1表 – NoMoCouch