2013-10-25 62 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