Я пытаюсь получить сумму агрегации за последние 3 дня для каждой отдельной группы. Однако я не понимаю, чего ожидал. Может кто-нибудь показать мне, как получить ожидаемый результат, возможно, с помощью pivot?
однако, мой результат разделил группы, давая мне результат, когда группа красная, и нуль, если она желтая. Тем не менее, я хочу, чтобы результат был таким, чтобы, хотя группа была желтой, данные все еще не были нулевыми, а просто дублировали предыдущее число. Может быть, попробовать это с Pivot?
select *,
case when group = 'Red' then count(NVL(amount,0)) OVER (PARTITION BY ACCOUNT, group ORDER BY day_number range 2 PRECEDING),
case when group = 'Yellow' then count(NVL(amount,0)) OVER (PARTITION BY ACCOUNT, group ORDER BY day_number range 2 PRECEDING)
from table
ожидаемый результат
Account Group Sum day_number Red Yellow
abc Red 20 1 20 0
abc Red 30 3 50 0
abc Yellow 40 4 50 40
def Red 20 5 20 40
def Yellow 50 8 0 50
def Yellow 20 9 0 70
неправильный вывод
Account Group Sum day_number Red Yellow
abc Red 20 1 20
abc Red 30 3 50
abc Yellow 40 4 40
def Red 20 5 20
def Yellow 50 8 50
def Yellow 20 9 70