2016-08-02 60 views
0

社区,根据Teradata中的关系表合并两个表

我得到了测试Teradata数据的任务。来自另一个领域,我想请求你的帮助。

所以我有三个表:

  • Zus0ID1ID2
  • Zus1ID1
  • Zus2ID2

现在我需要根据ID加入Zus1Zus2一世信息在Zus0。 我得到的问题是Zus0中显示的ID1Zus1中的列名称和格式不同。

像这样:

  • ID1Zus1: “6123421”; --column命名IDZ
  • Zus0
  • ID1:“000006123421”; - 列名为IDY

现在我想加入基于在Zus0的关系,你知不知道我该怎么办,这两个表?

+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) 

事实上你可能还需要转换领域的两套是一个他们已经是数字。由于您正在投射连接,因此如果两个字段都是数字并且不需要转换,它的速度也会比它慢。

+0

其实,如果你正在做这个测试:相同的信息存储不同的事实应该是一个测试失败。最好现在解决它,而不是像这样让一些东西展开 –