加入Teradata的问题

时间:2018-03-08 08:05:51

标签: sql join logic teradata teradata-sql-assistant

我在2个表中有2个字段.ie。状态(状态VARCHAR(80)CHARACTER SET LATIN CASESPECIFIC) 一个表有1000个状态,因为价值是“成功”。 第二个表有1个status = success值和其他值,如' failure'。我想加入2个表并从第2个表(dw_status_id)中获取值

1ST TABLE scratch.COGIPF_RUNREPORT_test

STATUS    |  any_number
success   |    67
success   |    1
success   |    2
success   |    3
success   |    42
success   |    52
failure   |    45

2nd table scratch.dw_job_status_dim_test

status   |dw_status_id
failure  |34      
success  |12
running  |45

结果: -

Status    |  dw_status_id
success   |    12
success   |    12
success   |    12
success   |    12
success   |    12
success   |    12
failure   |    34

我正在使用的查询: -

sel b.dw_status_id from scratch.COGIPF_RUNREPORT_test a
join scratch.dw_job_status_dim_test b on trim(a.status)=trim(b.status)

实际结果= 0

如果有人能帮助实现这个目标,那将是非常好的

由于

2 个答案:

答案 0 :(得分:2)

您只需从头开始选择状态.COGIPF_RUNREPORT_test和scratch.dw_job_status_dim_test中的dw_status_id。而且你必须检查两个表的状态是否等于成功。

所以我自己尝试过这个,也许有帮助:

select distinct scratch.COGIPF_RUNREPORT_test.status, dw_status_id 
from scratch.COGIPF_RUNREPORT_test, scratch.dw_job_status_dim_test 
where scratch.COGIPF_RUNREPORT_test.status = scratch.dw_job_status_dim_test.status

答案 1 :(得分:0)

这是第一张表中的3条记录: -

按日期按时发货metrics-superrush 0 0 0 0 2018-03-07 01:40:08 2018-03-07 00:00:00 2018-03-07 01:41:46.917000 1.64101666667成功

实验室 - 延迟发货详情0 0 0 0 2018-03-07 01:40:08 2018-03-07 00:00:00 2018-03-07 01:40:44.950000 0.6078成功

shipping upgrade-tp / wpd / mypub 0 0 0 0 2018-03-07 01:40:09 2018-03-07 00:00:00 2018-03-07 01:40:25.028000 0.2674成功

这些是第二张表中的一些记录

dw_status_id状态说明success_indicator

10运行RUNNING 0

11停止了STOPPED 0

12成功成功1

我已经尝试过你的2个查询..两个都没有给出任何结果。 理想情况下,它应该给出期望的结果。但不知怎的,我们在连接错误或varchar案件特定的情况下错误。如果您有更多的想法我在做错误,请告诉我