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

지정된 필드는 A 것이다 것은

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

다시 한번 보았을 때, 나는 틀린 대답을했다. 나는 이것을 숙고 할 것이다. B로서 T1.A 선택 – NoMoCouch

+0

합체 (A = T1.A 및 B는 \t) NULL이 아닌 WHERE \t T1.B을 \t는 (표 FROM B \t 해당) T1.C, T1.D 테이블을 T1 – NoMoCouch