【问题标题】:Conversion of Oracle query to teradata queryOracle 查询到 teradata 查询的转换
【发布时间】:2016-04-10 21:41:26
【问题描述】:

如何将下面的查询转换为等效的 teradate 查询。我尝试过,但结果差异很大。

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)

谢谢。

【问题讨论】:

  • @GergelyBacso 我刚刚将 hv.sDate+1 和 il.dDate+1 更改为 date+inetrval '1' 天,它运行成功,但结果不一样。我认为还有其他需要更改的地方,或者我做错了。
  • 更改为&lt;datefield&gt; + INTERVAL '1' DAY 并将sysdate 更改为CURRENT_DATE 应该可以解决问题。其他一切看起来都很好。
  • @JNevill no 仍然没有给出正确的结果

标签: oracle teradata


【解决方案1】:

使用 coalesce 代替 nvl 并比较说明语句,以查看您是否已将 Teradata 上的外部联接转换为 nvl 的内部联接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 2021-01-31
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    相关资源
    最近更新 更多