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 問題に関するヘルプをいただければ幸いです。
サンプルデータ:
RC テーブルの例: