2016-08-02 37 views
0

コミュニティ、Teradataの関係テーブルに基づいて2つのテーブルを結合する

Teradataでデータをテストするタスクがあります。別のフィールドから来て、私はあなたの助けを求めています。今、私はIDに基づいZus1Zus2に参加する必要がありID2

  • Zus0ID1ID2
  • Zus1ID1
  • Zus2

    は、だから私は3つのテーブルを持っています私Zus0に記載されています。 私が得た問題は、に表示されたZus0には、Zus1よりも別の列名と形式があります。 Zus1

    • ID1:このよう

      "6123421"。 --column Zus0にIDZ

    • ID1の名前:「000006123421」; - カラム

    IDY

  • という名前の今、私は Zus0関係に基づいて2つのテーブルを結合したいあなたは、私はそれを行うことができます方法を知っていますか?

+0

両方の列のデータ型は何ですか?数字の他に他の文字がある可能性はありますか? – dnoeth

+0

'Zus0'の列は常に先行0を持ちますか? – Andrew

答えて

0

IDは、すべての数値であり、問​​題は、varchar型のようなものとして保存されているもので、単に先行ゼロであると仮定すると:あなたが実際にフィールドの両方のセットをキャストする必要はないかもしれない

SELECT b.id1, c.id2 
FROM Zus0 a 
INNER join Zus1 b on CAST(b.id1 as BIGINT)=CAST(a.id1 as BIGINT) 
INNER join Zus2 c on CAST(c.id2 as BIGINT)=CAST(a.id2 as BIGINT) 

は1ですそれらはすでに数値です。あなたがキャストしているので、あなたのフィールドがすでに数値であり、変換が必要でなかった場合よりも、結合は遅くなります。

+0

実際には、テストのためにこれを行っている場合:同じ情報が異なって格納されているという事実は、おそらくテストに失敗するはずです。このように何かを展開させるよりも今すぐ修正する方がいい –

関連する問題