Ошибка Teradata 3504 (неагрегированные значения должны быть частью группы) при использовании оконной функции - PullRequest
0 голосов
/ 06 июня 2018

Итак, я написал запрос, который использует оконную функцию, и я продолжаю получать ошибку 3504 в Teradata, хотя я уверен, что у меня есть правильные столбцы в предложении 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

Буду признателен за любую помощь.Спасибо!

1 Ответ

0 голосов
/ 06 июня 2018

Предположительно, вы намереваетесь что-то вроде этого:

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

Кажется странным иметь промежуточную сумму без явного столбца даты в наборе результатов.

Кроме того, я заменилпсевдонимы с исходными именами столбцов.Не все базы данных поддерживают псевдонимы в оконных функциях, поэтому я привык к этой привычке.

...