【问题标题】:order analytical functions not allowed in where clausewhere 子句中不允许使用 order 分析函数
【发布时间】:2017-05-10 19:58:51
【问题描述】:

我正在尝试实现以下目标,但面临诸如 where 子句中不允许的订单分析功能之类的错误

select  a.araccno,a.ARBDTE,
sum(aramt) over( partition by araccno,ARBDTE  ORDER BY ARAMT asc) sum1
,sum(b.Bill_Stmt_Discount_Amt) over( partition by b.bill_statement_id order by b.Bill_Stmt_Discount_Amt asc) sum2
from stg.ars_etl  a
left outer join  tgt.bill_sta_dis  b
on 'LL'||a.araccno||a.arbdte=b.bill_statement_id
where  sum1<> sum2

如何在 Teradata 中实现这一点?

非常感谢!!

【问题讨论】:

    标签: sql teradata


    【解决方案1】:

    在大多数数据库中,您会使用子查询或 CTE。 Teradata 有qualify 子句:

    select a.araccno, a.ARBDTE,
           sum(aramt) over( partition by araccno,ARBDTE  ORDER BY ARAMT asc) as sum1,
           sum(b.Bill_Stmt_Discount_Amt) over (partition by b.bill_statement_id order by b.Bill_Stmt_Discount_Amt asc) as sum2
    from stg.ars_etl a left outer join
         tgt.bill_sta_dis  b
         on 'LL'||a.araccno||a.arbdte = b.bill_statement_id
    qualify sum1 <> sum2;
    

    【讨论】:

    • 太棒了!谢谢戈登!
    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 2017-07-17
    • 2016-02-20
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    相关资源
    最近更新 更多