在where子句中不允许使用分析函数

use*_*666 0 sql teradata

我试图实现以下但面临错误,如在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
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Teradata中实现这一目标?

非常感谢!!

Gor*_*off 5

在大多数数据库中,您将使用子查询或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;
Run Code Online (Sandbox Code Playgroud)