根据Teradata中的关系表组合两个表

时间:2016-08-02 14:55:22

标签: sql join teradata

社区,

我完成了在Teradata中测试数据的任务。来自另一个领域,我想请你帮忙。

所以我有三张桌子:

  • Zus0ID1ID2
  • Zus1ID1
  • Zus2ID2

现在,我需要根据Zus1中的Zus2信息加入IDZus0。 我遇到的问题是ID1中显示的Zus0有另一个列名和格式,而不是Zus1

像这样:

  • ID1Zus1中:“6123421”; - 名为IDZ的小组
  • ID1Zus0中:“000006123421”; - 名为IDY的列

现在我想基于Zus0中的关系加入这两个表你知道我怎么做吗?

1 个答案:

答案 0 :(得分:0)

假设这些ID都是数字的,问题只是那些存储为varchar的那些的前导零:

>>> def f(s):
...     print
...     print "recieved", s
...     if len(s) <= 1:
...         print "returning", s
...         return s
...     print "returning f(f(%s)) + %s" % (s[1:], s[0])
...     return f(f(s[1:])) + s[0]
...
>>> print f("abcd")

recieved abcd
returning f(f(bcd)) + a

recieved bcd
returning f(f(cd)) + b

recieved cd
returning f(f(d)) + c

recieved d
returning d

recieved d
returning d

recieved dc
returning f(f(c)) + d

recieved c
returning c

recieved c
returning c

recieved cdb
returning f(f(db)) + c

recieved db
returning f(f(b)) + d

recieved b
returning b

recieved b
returning b

recieved bd
returning f(f(d)) + b

recieved d
returning d

recieved d
returning d
dbca

您可能实际上不需要投射两组字段,其中一组已经是数字。由于您正在进行连接,因此如果两个字段都已经是数字并且不需要转换,那么连接速度也会比较慢。