Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Процедура расчета зп  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
Добрый вечер. Помогите пожалуйста составить запрос по расчету зп.

Есть следующие исходные данные по одному человеку:

Договор 1 - расчетная сумма для зп (1366129,82)
Договор 2 - расчетная сумма для зп (1143371,98)
Итого: 2509501,80

Есть табличка:
0 - 277151 -- 8%
2277152 - 0 -- 11%

Читается так:
Если сумма в диапазоне от 0 до 2277151 , то берем 8%.
Если сумма в диапазоне от 2277152 и до бесконечности (в теории вместо 0 можно границу указывать как 99999999), то берем 11%.

В результате должен получиться такой расчет с разбивкой по договорам:
1366129,82 * 8% = 109290,39 (договор 1)
(2277152 - 1366129,82) * 8% = 72881 (договор 2)
(1143371,98 - (2277152 - 1366129,82)) * 11% = 25558,48 (договор 2)

Все голову сломал как составить процедуру
4 авг 12, 19:40    [12962650]     Ответить | Цитировать Сообщить модератору
 Re: Процедура расчета зп  [new]
aleks2
Guest
1. Выкинь голову - она пустая.
2. Нафега тебе эта разбивка?
3. Просуммируй ВСЕ суммы договоров по человеку и с результатом (Итого: 2509501,80) выполни элементарный расчет.
5 авг 12, 05:39    [12963828]     Ответить | Цитировать Сообщить модератору
 Re: Процедура расчета зп  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
Уважаемый Алекс. Вы заказчику тоже так скажешь? Выкинь голову? Или будете их убеждать что оно им не нужно?
Побеспокойтесь лучше о своей голове. Т.к. при таком подходе к работе с вами не захотят сотрудничать.
Общий расчет по человеку я и так сделал давно. Загвоздка в хитрожопом расчеты по каждому договору.
7 авг 12, 02:56    [12972344]     Ответить | Цитировать Сообщить модератору
 Re: Процедура расчета зп  [new]
Я
Guest
Самый простой вариант - курсором пройтись по таблице сотрудников и попутно извлекать данные из связанных таблиц
7 авг 12, 11:04    [12973343]     Ответить | Цитировать Сообщить модератору
 Re: Процедура расчета зп  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
maximIZ,

С таким описание плохо понятно что требуется. У вас написано что таблица с диапазонами используется для определения процентов, тогда как в расчетах идут действия и с самими диапазонами. Причем по договору 2 две строчки.
Вы напишите алгоритм, как рассчитывать. И что включать в результаты. Тогда можно будет подумать, как уложить это в запрос.
7 авг 12, 11:14    [12973454]     Ответить | Цитировать Сообщить модератору
 Re: Процедура расчета зп  [new]
qwerty112
Guest
maximIZ
Уважаемый Алекс. Вы заказчику тоже так скажешь? Выкинь голову? Или будете их убеждать что оно им не нужно?
Побеспокойтесь лучше о своей голове. Т.к. при таком подходе к работе с вами не захотят сотрудничать.
Общий расчет по человеку я и так сделал давно. Загвоздка в хитрожопом расчеты по каждому договору.

причем тут заказчик ?
речь про твою голову,

а она - реально пустая, с "таким подходом" к оформлению сообщения, после 5-ти лет на форуме ...


----
это опечатка ?
автор
Есть табличка:
0 - 277151 -- 8%
2277152 - 0 -- 11%

declare @t1 table (xz1 varchar(20), xz2 money)

insert into @t1

select 'Договор 0', 3.42 union all
select 'Договор 1', 1366129.82 union all
select 'Договор 2', 1143371.98


declare @t2 table (xz3 int, xz4 int, xz5 int)

insert into @t2
select 0, 277151, 8 union all
select 227152, 1000000000, 11

--select * from @t1

--select * from @t2

select t1.xz1 , -- t1.xz2, t2.xz3, t2.xz4, t2.xz5,
case when t2.xz4>t1.xz2 then t1.xz2 else t2.xz4 end - t2.xz3 as xz1, 
(case when t2.xz4>t1.xz2 then t1.xz2 else t2.xz4 end - t2.xz3) * t2.xz5 /100.0 as xz2 

from @t1 t1 inner join @t2 t2 on t1.xz2>=t2.xz3

xz1                  xz1                   xz2                         
-------------------- --------------------- --------------------------- 
Договор 0            3.4200                .273600000
Договор 1            277151.0000           22172.080000000
Договор 2            277151.0000           22172.080000000
Договор 1            1138977.8200          125287.560200000
Договор 2            916219.9800           100784.197800000
7 авг 12, 11:36    [12973700]     Ответить | Цитировать Сообщить модератору
 Re: Процедура расчета зп  [new]
qwerty112
Guest
&%*$$я !
qwerty112
declare @t1 table (xz1 varchar(20), xz2 money)

insert into @t1

select 'Договор 0', 3.42 union all
select 'Договор 1', 1366129.82 union all
select 'Договор 2', 1143371.98


declare @t2 table (xz3 int, xz4 int, xz5 int)

insert into @t2
select 0, 277151, 8 union all
select 277152, 1000000000, 11

--select * from @t1

--select * from @t2

select t1.xz1 , -- t1.xz2, t2.xz3, t2.xz4, t2.xz5,
case when t2.xz4>t1.xz2 then t1.xz2 else t2.xz4 end - t2.xz3 as xz1, 
(case when t2.xz4>t1.xz2 then t1.xz2 else t2.xz4 end - t2.xz3) * t2.xz5 /100.0 as xz2 

from @t1 t1 inner join @t2 t2 on t1.xz2>=t2.xz3

xz1                  xz1                   xz2                         
-------------------- --------------------- --------------------------- 
Договор 0            3.4200                .273600000
Договор 1            277151.0000           22172.080000000
Договор 2            277151.0000           22172.080000000
Договор 1            1088977.8200          119787.560200000
Договор 2            866219.9800           95284.197800000
7 авг 12, 11:41    [12973743]     Ответить | Цитировать Сообщить модератору
 Re: Процедура расчета зп  [new]
aleks2
Guest
maximIZ
Уважаемый Алекс. Вы заказчику тоже так скажешь? Выкинь голову? Или будете их убеждать что оно им не нужно?
Побеспокойтесь лучше о своей голове. Т.к. при таком подходе к работе с вами не захотят сотрудничать.
Общий расчет по человеку я и так сделал давно. Загвоздка в хитрожопом расчеты по каждому договору.


С заказчиком надо уметь договариваться. "Хитрожопые расчеты" никому не нужны, ибо противоречат здравому смыслу и букве налогового законодательства. Нигде не облагается "конкретный" договор. Облагается сумма за перид.
7 авг 12, 11:42    [12973757]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить