Teradata加入的场景

时间:2017-03-21 16:05:30

标签: sql teradata

我有两个源表

MST

CustNo  Date
C1  P1
C1  P2
C1  P3
C1  P4
C1  P5
C1  P6

TMP

CustNo  Rule    Amt Date
C1  R1  A1  P1
C1  R1  A2  P2
C1  R1  A3  P3

我希望我的结果表为

CustNo  Rule    Amt Date
C1  R1  A1  P1
C1  R1  A2  P2
C1  R1  A3  P3
C1  R1  0   P4
C1  R1  0   P5
C1  R1  0   P6

可以帮助我如何在TD中实现这一目标

3 个答案:

答案 0 :(得分:0)

使用它。但它不会为所有行提供R1

select
m.CustNo,t.Rule,
case when t.Amt is null 
    then 0 
    else t.Amt 
end as Rule
,m.Date
from MST m
left join
TMP t
on m.Date=t.Date

P4和'R1 , but if you just want to Hardcode R1 with C1 , you can use it in select`查询之间没有任何关系。

答案 1 :(得分:0)

select    a.custno,coalesce(b.rule,'R1') as rule,amt,a.date
from      mst a
leftjoin  tmp b
       on a.cust_date=b.cust_date
      and a.cust_no = b.cust_no

答案 2 :(得分:0)

select
m.CustNo,COALESCE(t.RULE, 'R1' ),
case when t.Amt is null 
    then 0 
    else t.Amt 
end as amt
,m.Date1
from d1t_tmp.customer1 m
left join
d1t_tmp.customer2 t
on m.Date1=t.Date1
ORDER BY M.DATE1