Если сумма всего столбца равна нулю, измените значение каждой строки в SQL Server - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть столбец с именем Percentage из временной таблицы info, который, если сумма всего столбца равна нулю, я хочу изменить значение каждой строки на 0,5, а если утверждение ложно, просто оставить это так.

Я попытался сделать следующее:

select case when Percentage = 0 then replace(Percentage, 0,0.5) end from ##info

Я знаю, что вышеизложенное изменит поля всякий раз, когда они равны 0, независимо от суммы всего столбца, и если Я делаю:

select case when sum(Percentage) = 0 then replace(Percentage, 0,0.5) end from ##info

это выдает ошибку.

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

Любые предложения приветствуются

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Если вы хотите выбрать его:

SELECT 
    CASE 
        WHEN (SELECT SUM(Percentage) FROM ##info) = 0 THEN .5
        ELSE Percentage
    END
FROM ##info

Если вы хотите обновить значения в таблице:

 UPDATE ##info
 SET Percentage = .5
 WHERE (SELECT SUM(Percentage) FROM ##info) = 0
1 голос
/ 18 февраля 2020

Пожалуйста, найдите ответ ниже.

declare @v_val numeric(12,2), @v_new_val numeric(12,2)

set @v_val = 0.00    
set @v_new_val = 100

select case when @v_val ='0.00' then @v_new_val else @v_val end
...