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

Откуда:
Сообщений: 16
Здравствуйте, у меня проблема с распределением оплаты по счетам. Конкретнее в том что не могу расщепить оплату по месяцам.
Код, приведённый ниже, расщепляет оплату на все счета, что есть. Cкрипты создания таблиц могу скинуть. Мб ранжирование и побольше CASE-ов. Любое направление будет оценено. Спасибо. p.s в соответствии с пунктом 6.
Модератор: пункт 6
<...>
- скрипты создания таблиц;
- скрипты заполнения этих таблиц тестовыми данными;
- описание желаемого результата на примере тестовых данных.
<...>

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
25 окт 19, 17:50    [22002936]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить