powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Посчитать сальдо в разрезе документа
7 сообщений из 7, страница 1 из 1
Посчитать сальдо в разрезе документа
    #39994180
Earl11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Имеются две таблицы: долг (покупатель, номер документа, дата, сумма долга) и платежи (покупатель, номер платёжки, дата, сумма платежа). Нужно вывести сальдо по каждому документу т.е. максимально покрыть долг платежами.
Например, есть долг док1 = 1500, док2 = 2000, производятся платежи плж1 = 500, плж2 = 700, плж3 = 1000. Сальдо по документам должно быть док1 = 0, док2 = 1300. По факту, долги гасятся по фифо. Какими способами можно реализовать?
...
Рейтинг: 0 / 0
Посчитать сальдо в разрезе документа
    #39994202
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Earl11,

гуглите "нарастающий итог".

но с фифо может быть несколько гемморойней если у вас бизнес модель предусматривает увеличение долга. помню немного попарился с расчетом валютной позиции по учету цб.
...
Рейтинг: 0 / 0
Посчитать сальдо в разрезе документа
    #39994346
Earl11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff,
А с двумя таблицами такое возможно будет сделать?
...
Рейтинг: 0 / 0
Посчитать сальдо в разрезе документа
    #39994348
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Earl11,

А с двумя таблицами такое возможно будет сделать?


такое - это какое? ваш вопрос выпадает из контекста первого вопроса.

нарастающий итог вы будете считать по данным из таблицы платежей, но связанной с таблицей долг конечно (по покупателям) - это две таблицы
...
Рейтинг: 0 / 0
Посчитать сальдо в разрезе документа
    #39994648
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для побаловаться с целью поизучать аналитику
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
with credits as(
select 1 user_id, 1 doc_id, {d '2020-01-01'} doc_date, 100 amount union all
select 1 user_id, 2 doc_id, {d '2020-01-03'} doc_date, 200 amount union all
select 1 user_id, 3 doc_id, {d '2020-01-05'} doc_date, 300 amount union all
select 2 user_id, 4 doc_id, {d '2020-01-11'} doc_date, 400 amount union all
select 2 user_id, 5 doc_id, {d '2020-01-21'} doc_date, 500 amount
),
payments as (
select 1 user_id, 250 payment, {d '2020-01-21'} payment_date union all
select 1 user_id,  50 payment, {d '2020-01-21'} payment_date union all
select 1 user_id, 250 payment, {d '2020-01-21'} payment_date union all
select 2 user_id,   5 payment, {d '2020-01-21'} payment_date
)
select cr.*,
       sum(amount) over(partition by cr.user_id  order by cr.doc_date) amount_inc,
	   case
	        when sum(amount) over(partition by cr.user_id  order by cr.doc_date) <= p.payment then 0
	        when -amount+sum(amount) over(partition by cr.user_id  order by cr.doc_date) < p.payment then sum(amount) over(partition by cr.user_id  order by cr.doc_date)-p.payment
	        else amount
	   end
  from credits cr
  join
  (
  select user_id, sum(payment) payment
    from payments
   group by user_id
  ) p
  on p.user_id = cr.user_id

user_iddoc_iddoc_dateamountamount_inc(Отсутствует имя столбца)112020-01-01 00:00:00.0001001000122020-01-03 00:00:00.0002003000132020-01-05 00:00:00.00030060050242020-01-11 00:00:00.000400400395252020-01-21 00:00:00.000500900500
...
Рейтинг: 0 / 0
Посчитать сальдо в разрезе документа
    #39995396
Earl11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,
а в разрезе дат платежей это можно сделать?
...
Рейтинг: 0 / 0
Посчитать сальдо в разрезе документа
    #39995427
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Earl11,

прочитайте справку про предложение over() отпадет достаточно много вопросов.

https://docs.microsoft.com/ru-ru/sql/t-sql/queries/select-over-clause-transact-sql?view=sql-server-ver15

https://info-comp.ru/obucheniest/649-over-in-t-sql.html

вот на мой взгляд достаточно втятное объяснение с цветными картинками:
https://www.fastreport.ru/ru/blog/251/show/
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Посчитать сальдо в разрезе документа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]