0

これが SQL クエリで実行できるかどうかはわかりません。エクセルできます。

クエリ

SELECT
        A,
        B,
        C,
        D,
        E,
        F
from TableA
where D in ('MSD_CHANGE','MSD_CMT_CHANGE')


シート

フィールド D に含まれているMSD_CMT_CHANGE場合、上と右の行に 1 = 7866 Excel 言語の別の単語 E1 = E2 が含まれます。

現在、SQL からクエリ データを取得し、Excel でスクリプトを実行して実行しています。
SQL で実行できれば、作業負荷が軽減されます。

VBA コード:

Sub Test
    Dim rng as Range, cl as Range

    Set rng = Range("D2:D" & Range("D" & Rows.Count).End(xlUp).Row)

    For each cl in rng
       If cl = "MSD_CMT_CHANGE" AND cl.Offset(-1, 0) = "MSD_CHANGE" Then
           cl.Offset(-1, 1) = cl.Offset(0, 1)
       End If
    Next cl
End Sub

説明

if field_D = MSD_CMT_CHANGE then  

   compare row above it if equal "MSD_CHANGE" then 

        cell E1 = E2.

5000 行を超えるデータがあります。

より良い説明については、下の画像を確認してください。

4

1 に答える 1

1

idこのように表示される列を取得するためにデータを並べ替える列があると仮定しました (私の例では、その列は です) D

A    D            
------------------
1 MSD_CHANGE
-----------------
2 MSD_CMT_CHANGE
-----------------
3 MSD_CMT_CHANGE
-----------------
4 MSD_CHANGE

この例では、ID はデータを並べ替える列です

select id
      , d
      , decode(d, 'MSD_CHANGE', 
               decode(lead(d, 1, d) over(order by id), 'MSD_CMT_CHANGE', 
                      lead(e, 1, e) over(order by id) , e 
                      ) 
              ,e) e
  from t1
  order by id

ここにデモがあります

于 2012-09-19T16:55:48.383 に答える