使用窗口函数时出现 Teradata 错误 3504(非聚合值必须是组的一部分)

Teradata error 3504 (non-aggregate values must be part of group) when using windowing function

所以我编写了一个使用 window 函数的查询,并且我在 Teradata 中不断收到错误 3504,尽管我确信我在 group by 子句中有正确的列(所有非聚合列).它与我正在使用的 windowing 函数有关,因为当我注释掉它时我没有得到错误,但我不知道如何解决它。

这是查询:

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

非常感谢任何帮助。谢谢!

据推测,您的意图是这样的:

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

总计 运行 似乎很奇怪,结果集中没有明确的日期列。

另外,我用原来的列名替换了别名。并非所有数据库都支持 window 函数中的别名,所以这只是我习惯的习惯。