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

Откуда:
Сообщений: 16
Написал код распределения на все счета, но как распределить по месяцам?
24 окт 19, 17:01    [22001897]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
msLex
Member

Откуда:
Сообщений: 7724
Samat Samat,

Добавить в ваш код разделение по месяцам
24 окт 19, 17:03    [22001899]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
Samat Samat
Member

Откуда:
Сообщений: 16
msLex,
Вот, что есть. Но не могу остановить цикл
CASE
	      WHEN p.N_Amount > Долг AND ROW_NUMBER() OVER (PARTITION BY F_Subscr, YEAR(D_Date), MONTH(D_Date) ORDER BY LINK) = 1
		  THEN p.N_Amount - Долг
		  ELSE CAST(CAST(p.N_Amount AS FLOAT)*b.N_Amount/NULLIF(Долг,0) AS DECIMAL(15,2)) END Распределение 
24 окт 19, 17:04    [22001901]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
court
Member

Откуда:
Сообщений: 1956
Samat Samat
Но не могу остановить цикл
Нуу ещё бы !
Его ж тут и нет :)
24 окт 19, 17:06    [22001905]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
Samat Samat
Member

Откуда:
Сообщений: 16
court,

Как быть?
24 окт 19, 17:07    [22001907]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
Samat Samat
Member

Откуда:
Сообщений: 16
Samat Samat,

Не представляю какой код на разделение. С чего начать?

Модератор:
https://www.sql.ru/forum/127456/rekomendacii-po-oformleniu-soobshheniy-v-forume
пункт 6


Сообщение было отредактировано: 24 окт 19, 17:31
24 окт 19, 17:26    [22001930]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
Samat Samat
Member

Откуда:
Сообщений: 16
Здравствуйте, у меня проблема с распределением оплаты по счетам. Конкретнее в том что не могу расщепить оплату по месяцам.
Код, приведённый ниже, расщепляет оплату на все счета, что есть. Cкрипты создания таблиц могу скинуть. Мб ранжирование и побольше CASE-ов. Любое направление будет оценено. Спасибо.
DECLARE @LINK INT 
SET @LINK =1;
With Payments 
AS ( SELECT *
     FROM dbo.FD_Payments
	 WHERE LINK = @LINK),
     Bills 
AS ( SELECT *,
            ISNULL(SUM(N_Amount) OVER (PARTITION BY F_Subscr, YEAR(D_Date), MONTH(D_Date)),0) AS Долг
	 FROM dbo.FD_Bills
     WHERE F_subscr IN (SELECT F_Subscr FROM Payments) AND N_Amount <> 0)
SELECT p.LINK as F_Payments, b.LINK as F_Bills, C_Sale_Items, p.N_Amount, b.N_Amount,
       CASE
	      WHEN p.N_Amount > Долг 
		  THEN p.N_Amount - Долг
		  ELSE CAST(CAST(p.N_Amount AS FLOAT)*b.N_Amount/NULLIF(Долг,0) AS DECIMAL(15,2)) END Распределение  
FROM Payments p JOIN
	 Bills b ON p.F_Subscr = b.F_Subscr 
25 окт 19, 17:53    [22002939]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
Samat Samat,

это в принципе невыполнимая задача, т.к. никто не знает - какой счет был намерен оплатить абонент. Он может, например, перечислить три платежа в один день и в этот же день было выставлено пять счетов. Какие два счета останутся без оплаты? Обычно достаточно баланса для принятия каких-либо решений или оценки ситуации.
25 окт 19, 18:13    [22002947]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
Samat Samat
Member

Откуда:
Сообщений: 16
Владислав Колосов,

Распределение пропорциональное
25 окт 19, 18:23    [22002954]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
Samat Samat,

Приведите пример "пропорционального распределения".
25 окт 19, 18:27    [22002958]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
Samat Samat
Member

Откуда:
Сообщений: 16
Владислав Колосов,

Например, распределить поступившую оплату по статьям или по договорам пропорционально долгу. Распределяется сумма оплаты по договорам в соответствии с коэффициентом Долг/СуммаДолга
25 окт 19, 18:34    [22002966]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
Samat Samat,

в числах нужен пример, понятный математически. Т.е. правила распределения. У Вас слишком обобщенные термины, непонятно.
25 окт 19, 19:03    [22002977]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Владислав Колосов,

Про пункт 6 рекомендаций товарищу, у которого закрыто 4 темы из 6, уже рассказывают давно. Но он не сгибается, партизанит как может.
25 окт 19, 23:19    [22003075]     Ответить | Цитировать Сообщить модератору
 Re: Пропорциональное распределение  [new]
982183
Member

Откуда: VL
Сообщений: 3349
Samat Samat
распределить поступившую оплату по статьям или по договорам пропорционально долгу.
Распределяется сумма оплаты по договорам в соответствии с коэффициентом Долг/СуммаДолга


Посчитай общую сумму долгов
сделай цикл по всем статьям/договорам
Умножь в цикле "сумму оплаты" на сумму долга по конкретной статье статье/договору и раздели на ранее посчитанную сумму долгов.

После всего - прими решение куда деть "ошибки округления"
27 окт 19, 16:09    [22003665]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить