所以我写了一个使用窗口函数的查询,并且我在Teradata中不断收到错误3504,尽管我确定我在group by子句中有正确的列(所有非聚合列)。它与我正在使用的窗口函数有关,因为当我发表评论时我没有得到错误,但我不知道如何解决它。
这是查询:
select
n.acct_id as bd_acct_id
,n.tran_nr as tran_order
,t.trade_dt - n.tran_dt as days_until_trade
,n.n_total
,sum(t.trade_ct) as trades_ct
,sum(t.trade_gross_am) as tot_trades
,sum(t.trade_gross_am) over (partition by bd_acct_id, tran_order order by tran_order) as running_total
from nnae n
left join trades t
on n.acct_id = t.acct_id
having days_until_trade > 0
group by 1,2,3,4
order by 1,2,3
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
据推测,你打算这样:
sum(sum(t.trade_gross_am)) over (partition by n.acct_id, n.tran_nr
order by min(n.tran_dt)
rows between unbounded preceding and current row
) as running_total
有一个运行总计似乎很奇怪,结果集中没有明确的日期列。
另外,我用原始列名替换了别名。并非所有数据库都支持窗口函数中的别名,因此这只是我习惯的习惯。