0

このブログを通して助けてくれてありがとう。Teradata SQL 要件に取り組んでおり、ここで助けが必要です。以下、詳細です。

1. S_SRV_REQ_X has a column ATTRIB_47 which has different values like below.
Record 1: ,233650289942,803632139926
Rec 2: ,307503494667,,657001028536
Rec 3: 010000768233,010000768241,
Rec 4: 010000768233,010000768241,
Rec 5:,,,517971957017,
Rec 6: ,,002512117934,301040153878,,573977796362
Rec 7: ,002402799494,,,,,,,
and so on..

上記は、別のテーブル列 S_ASSET テーブル、列: SERIAL_NUM (行ごとに 1 つのレコードしかない) を調べて、そのシリアル番号の S_ASSET テーブルでステータスを見つけ、切断された SR_NUM を入力する必要があるアクセス カード番号です。カードのみ。

アクセス カード番号のパターン マッチのみを実行し、DISC カードの SR_NUM を設定する方法はありますか?

アクセス カード番号は常に 12 桁で、カンマで区切られています。ただし、コンマはレコードのどこにでもある可能性があります。ATTRIB_47 列の最大長は 255 であるため、どのレコードにも最大 15 枚以上のカードを含めることができます。

where句にこの条件が必要です。誰かがこれについていくつかのアイデアを流してもらえますか??

条件:

AND SSRY.CST_OU_ID = s_asset.owner_accnt_id;
AND S_ASSET = S_SRV_REQ_X.ATTRIB_47(do pattern match here to look for each access card numbers in the table).

助けてください。

4

1 に答える 1

0

等式を使用する追加の条件がある場合は、単純に LIKE を使用できます: SSRY.CST_OU_ID = s_asset.owner_accnt_id AND S_SRV_REQ_X.ATTRIB_47 like '%' || S_ASSET || '%'

ただし、これが唯一の結合条件である場合は、積結合が発生し、大きなテーブルでは大量の CPU が消費されます。その場合、結合する前に値を行に分割することをお勧めします。Teradata のリリースによっては、多かれ少なかれ簡単になる場合があります。

ところで、繰り返しグループは第 1 正規形に違反しているため、非常に悪い習慣です。

ディーター

于 2013-07-15T18:15:30.450 に答える