Недопустимая операция: переменная не найдена в списке целей подплана - RedShift - PullRequest
0 голосов
/ 25 октября 2018

У меня есть следующий запрос

  create table #m3
  ( recordDate date ,
  factor float);
  commit;

    insert into "#m3" (recordDate,factor) 
   values
  (DATE '2018-07-01' ,0.9999),
  (DATE '2018-08-01', 0.9995),
  (DATE '2018-09-01',0.9989),
  (DATE '2018-10-01', 0.9948);

  ---------- Query----- 
 select recordDate ,aggregatedvalue
 from (            
    select
       recordDate ,  sum( factor) AggregatedFactor 
      , sum(AggregatedFactor) over (order by  recordDate asc rows between 2 preceding and current row)   * NULLIF( (count(1) over (order by  recordDate asc rows between 2 preceding and current row))/3,0)  AggregatedValue 
   from  
      #m3
  group by  recordDate 
) t

Это дает мне следующую ошибку

[Amazon](500310) Invalid operation: variable not found in subplan target list;
1 statement failed.

Когда я запускаю следующее, он работает

---------- Query----- 
 select
       recordDate ,  sum( factor) AggregatedFactor 
      , sum(AggregatedFactor) over (order by  recordDate asc rows between 2 preceding and current row)   * NULLIF( (count(1) over (order by  recordDate asc rows between 2 preceding and current row))/3,0)  AggregatedValue 
   from  
      #m3
  group by  recordDate 

Результаты вышеquery

recorddate  aggregatedfactor    aggregatedvalue
2018-07-01  1   
2018-08-01  1   
2018-09-01  1   3
2018-10-01  0.99    2.99

Когда я удаляю NULLIF, он тоже работает.

---------- Query----- 
select recordDate ,aggregatedvalue
from (             
    select
       recordDate ,  sum( factor) AggregatedFactor 
      , sum(AggregatedFactor) over (order by  recordDate asc rows between 2 preceding and current row)      AggregatedValue 
   from  
      #m3
  group by  recordDate 
) t

Результаты запроса выше

recorddate  aggregatedvalue
2018-07-01  1
2018-08-01  2
2018-09-01  3
2018-10-01  2.99

Любая причина, по которой NULLIF может вызывать исключение

...