Это означает, что вы пытаетесь получить доступ к индексу массива, который недопустим, поскольку он не находится между границами.
Например, это инициализировало бы примитивный целочисленный массив с верхней границей 4 .
int intArray[] = new int[5];
Программисты подсчитываются с нуля. Таким образом, это, например, выбрало бы ArrayIndexOutOfBoundsException
, поскольку верхняя граница равна 4, а не 5.
intArray[5];
Вы можете определить окно в предложении FROM
. Например:
select v.*, row_number() over w
from (values (1, 2), (1, 3)) v(x, y)
window w as (partition by x order by y)
В вашем конкретном примере я могу предположить что-то вроде этого:
select . . .
(case when household_key = lag(household_key) over w and
product_id = lag(product_id) over w
then dt - lag(dt) over w
end) as delta
from . . .
window w as (order by household_key, product_id, dt)