0
SELECT DR.column
FROM DB.Table RCT
LEFT OUTER JOIN DB.Table2 RC ON RCT.NBR_CLMN = RC.NBR_CLMN
LEFT OUTER JOIN DB.Table3 DR ON DR.NEW_NBR_CLMN = RC.VCHAR_COLUMN

上記の SQL コードを Teradata SQL Assistant で実行すると、2620「形式またはデータに不正な文字が含まれています」というエラーが表示されます。問題の正確な原因を突き止めたところ、 DR.NEW_NBR_CLMNと RC.VCHAR_COLUMN が異なるデータ型であり、暗黙的な変換が失敗したことが原因のようです。

次のように、結合の両側で CAST AS VCHAR と CAST AS BIGINT を使用してみました。

LEFT OUTER JOIN DB.Table3 DR ON CAST(DR.NEW_NBR_CLMN AS BIGINT) = CAST(RC.VCHAR_COLUMN AS BIGINT)

残念ながら、vchar としてキャストすると、一致するものがないため、DR テーブルから null 値が返されます。bigint としてキャストすると、以前と同じエラーが返されます。問題の一部は、一方の列の数値にカンマが含まれているのに、もう一方の列にはカンマが含まれていることです (例: "66993001968" と "66,993,001,968")。

そのため、REPLACE を使用してコンマを削除しようとしましたが、Teradata はそれが正しい使用法ではないと教えてくれました。より具体的には、このエラー:「SELECT に失敗しました。[3706] 構文エラー: 'ON' キーワードと 'REPLACE' キーワードの間に何かが必要です。」

ここに私がしようとしているものがあります:

LEFT OUTER JOIN DB.Table2 RC ON REPLACE(DR.NEW_NBR_CLMN, ',', '') = RC.VCHAR_COLUMN

全体的な結合の問題、またはより具体的な REPLACE 問題に関するヘルプをいただければ幸いです。

サンプルデータ:

DR テーブルの例: DR テーブルの例

RC テーブルの例:

RC テーブルの例

望ましい結果: 望ましい結果

4

1 に答える 1