でチェーンの長さを数える:、私は次のようなSAS/SQLでテーブルを持っているSQL
入力私は私の長さを伝える3列目を持ちたい
Field1 Field2
A B
E F
C D
B C
Field1とField2で作成できる「チェーン」の数です。私は例を使って説明します。私たちのケースでは、私がしたいと思う:これはどうなるのか
出力
Field1 Field2 Length
A B 1
B C 2
C D 3
E F 1
は「チェーン」を見つけて、その長さを計算しています。この例では、 "A-B-C-D"と "E-F"という2つのチェーンを持っています。チェーンは、チェーンの始まり(この場合は「A-B」)を有する行を最初に形成する。次に、Field2の値がBなので、Field1の値Bを探し、Field2の新しい対応する値(この場合は「B-C」)を持つ最初の行の下に書き込みます。次に、Field1に値Cが存在するかどうかをチェックし、そうであればそれを書き留めます。私たちの場合、それは「C-D」になります。ここでも、Field1に値Dが存在するかどうかをチェックします。存在しないので、次の連鎖でアルゴリズムを開始し、より多くの接続を持たない "E-F"と書くでしょう。
長さの値は、そのペアがどれほど深いかを示します。 「A-B-C」は鎖「A-B-C」の第2の対であり、「C-D」は鎖「A-B-C-D」の第3の対である。
私は解決策、これを達成するための任意の助けに来ることができません?この形式で正確に記述する必要はありません。回避策も大きな助けになります。
ある行については、Field1 = Field2であることは決してありません。
ありがとうございます!
再帰的なCTEが必要です。 SASにはまだIIRCはありません。 – wildplasser