2016-01-06 39 views
0

如何将此转换下面的查询等效teradate查询。我尝试过,但结果变化很大。转换Oracle查询的到Teradata的查询

select il.domainN as listname, il.SourceID, ns.sourcename, cbo.customerid, cu.username, hv.domainN as HTname 
, nvl((select 1 
     from mydb.customerPP cpp 
     where cbo.customerid = cpp.customerid 
      and NOT EXISTS (select 1 from mydb.customerPI cpt where cpp.customerid = cpt.customerid) 
      and trunc(cpp.startdate) <= sysdate 
     group by cpp.customerid),0) as BBID 
from mydb.customerBO cbo 
    join mydb.customers cu on cbo.customerid = cu.customerid 
    join mydb.inv il on cbo.domainN = il.domainN 
    join mydb.Sources ns on il.SourceID = ns.SourceID 
    left join mydb2.HT hv on (il.domainN = hv.domainN 
            and hv.sDate+1 >= il.dDate 
            and il.dDate+1 >= hv.sDate) 
where cbo.customerBOID = 1 
    and cu.statusid = 1 
    and il.sourceTID = 2 
    and il.joinbydate >= cbo.cDate 
    and trunc(il.dDate) = trunc(sysdate) 

谢谢。

+0

你试过了什么? –

+0

@GergelyBacso我只是改变hv.sDate + 1和il.dDate + 1日期+ inetrval“1”有一天,它成功运行,但结果是不一样的。我认为还有其他事情需要改变,或者我做错了。 – user3438498

+0

更改为' +间隔 '1' DAY'和改变'sysdate'到'CURRENT_DATE'应该做的伎俩。其他一切都很好。 – JNevill

回答

0

使用COALESCE代替NVL和比较解释语句来看看你是否已经离开外连接转换为内部连接对Teradata的NVL。