over(PARTITION BY group_field))
В данном случае выполняется присваивание поля для всех макс значений(их может быть как одно, так и несколько), необходимо выполнить только для первого макс значения по группе. В какую сторону копать?)
начните копать с нормального оформления вопроса никакого присваивания не видно виден кусок case expression какой контекст, где таблицы, есть ли иные преобразования - ничего из этого не видно
select area,delta,case delta when MAX(delta) over(PARTITION BY group_field) then код over(PARTITION BY group_field)), sum (delta) over(PARTITION BY group_field) as sumDelta from deltas Здесь нечего особо и показывтаь, нужно изменить значение только для одного MAX в группе, остальные не трогать.
WITH CTE AS ( SELECT area, delta, code, ROW_NUMBER() OVER (PARTITION BY group_field ORDER BY delta DESC) AS rn, SUM(delta) OVER (PARTITION BY group_field) as sumDelta FROM deltas ) SELECT area, CASE WHEN rn = 1 THEN code ELSE delta END as delta, sumDelta FROM CTE;
Обсуждают сегодня