2017-02-09 4 views
-1
select sr.id,sr.increasedamount,sr.newsalary 
    from revision sr 
    inner join vwemp vw on vw.id=sr.id 

id  increasedamount newsalary 
15691 14600   80000 
12500 2236   26000 
12501 1969   25500 
1252 1982   25000 

Теперь в этом я хочу%, чтобы показать, сколько% увеличение, как в первом рекордную сумму в 14600 , поэтому я хочу, чтобы отобразить увеличение нового столбца 14%Увеличение количества в% SQL

id  increasedamount newsalary increment in % 
15691 14600   80000 
12500 2236   26000 
12501 1969   25500 
1252 1982   25000 
+0

как рассчитать прирост в%? – fable

+0

У меня уже есть величина увеличения в процентах, теперь я хочу просто отобразить в%. –

+0

Старая зарплата составляет 80000-14600 = 65400, поэтому в новой колонке должно быть 22%? –

ответ

1
select sr.id,sr.increasedamount,sr.newsalary, 
CASE WHEN sr.newsalary-sr.increasedamount=0 THEN 0 
ELSE (sr.increasedamount)*(100/CONVERT(decimal,(sr.newsalary-sr.increasedamount))) END as 'incrementinpercentage' 
from revision sr 
inner join vwemp vw on vw.id=sr.id 
+0

это показывает ошибку .. Разница по нулевой ошибке столкнулась –

+0

@cooluser: сейчас –

+0

это показывает 0 против каждого идентификатора .. вы проверили ваш запрос? –

0

вы можете искать эту

SELECTC id, 
     increasedamount, 
     newsalary, 
     ((increasedamount*1.0)/(newsalary-increasedamount))*100 
FROM revision 
+0

есть cofusion .. когда я умножу 65400 * 22% = 14388 .. это показывает 14388, где я хочу 80 000, так как это может быть 22%? –

+0

@cool user: вам нужно сменить оператор и добавить фигурные скобки, (65400 + 22%) даст вам 79 788. Если вам нужны точные 80 000, тогда вам нужно рассмотреть все десятичные знаки, и это также в некоторых случаях не даст вам точного номера (пример (5/3)). –

+0

какой оператор мне нужно изменить –

0

Если вам нужно, чтобы получить сумму, 22% высокий, то существующий объем, просто умножить на 1,22. Если вам нужно округлить до определенного значения, используйте круглую функцию для результата, чтобы получить нужное количество нулей. раунд (зарплата, -2) округляется до ближайшей сотни. Например, если old_salary составляет 100 $ для ID = 1, ниже приведет к 1, $ 122, $ 22

select sr.id, (OLD_SALARY*1.22) NewSALARY, (OLD_SALARY*1.22 -OLD_SALARY)Increasedamount from table 

Если вы просто хотите, чтобы это выглядело как 22% в вашем результате вместо .22, вам потребуется чтобы сделать что-то вроде гипса (Increment * 100, как VARCHAR) + '%'

0
Below query will give you expected results 

declare @userData TABLE(id int,increasedamount int,newsalary int) 
insert into @userData values(15691,14600,80000) 
insert into @userData values(12500,2236,26000) 
insert into @userData values(12501,1969,25500) 
insert into @userData values(1252,1982,25000) 

select id,increasedamount,newsalary,(case when previousSalary > 0 then (increasedamount *100/previousSalary) else 0 end) incrementPercentage 
from (select id,increasedamount,newsalary,(newsalary - increasedamount) previousSalary from @userData) as t 
+0

означает, что для 80 000 увеличенных сумм составляет 14600, так что здесь 65400 - это старая зарплата 80,000-14600 = 65400 так далее 65400 сумма 14600 увеличивается до 80,000. поэтому я хочу отобразить это 14600 in%. означает, что процент% увеличивается на 65400, чтобы стать 80 000 –

+0

. Можете ли вы просто показать мне ваш образец вывода –

+0

да для выхода 15691 .. увеличенныйamount = 14600 \t newsalary = 80000 \t incrementpercentage = 22 –

Смежные вопросы