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
4

1 に答える 1

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
于 2013-10-25T16:04:44.583 に答える