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

Откуда:
Сообщений: 116
есть две таблицы
таблица со счетами клиентов 
id     id_c      счет                    дата открытия 
1	1	9830000367	2012-07-22 19:21:50.700
2	2	9830000558	2012-07-22 19:21:50.700
3	2	9830000340	2012-07-22 19:22:06.300

движение денежных средств со счета на счет
дата                      откуда           куда          сумма
2012-08-05 00:00:00.000	9830000367	9830000558	500,00
2012-08-11 00:00:00.000	9830000558	9830000367	200,00
2012-08-13 00:00:00.000	9830000367	9830000558	50,00
2012-08-23 00:00:00.000	9830000367	9830000558	300,00
2012-08-23 00:00:00.000	9830000558	9830000367	350,00

нужно сформировать остатки по каждому счету, по датам!
Помогите пожалуйста, подскажите просто в каком направление двигаться а то у меня ступор!
23 фев 13, 22:00    [13971514]     Ответить | Цитировать Сообщить модератору
 Re: формирование остатков  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
что-то вроде
...
from table2 t2
cross apply(
  select t2.date, t2.schet_to schet, ts.summa 
  union all
  select t2.date, t2.schet_from, -ts.summa 
  )a
join table1 t on t.schet=a.schet
...
23 фев 13, 22:16    [13971546]     Ответить | Цитировать Сообщить модератору
 Re: формирование остатков  [new]
noTpyJI
Member

Откуда:
Сообщений: 116
Cygapb-007
что-то вроде
join table1 t on t.schet=a.schet

что на что join делать? саму на себя? Не совсем пример понятен
23 фев 13, 22:33    [13971585]     Ответить | Цитировать Сообщить модератору
 Re: формирование остатков  [new]
noTpyJI
Member

Откуда:
Сообщений: 116
20120730 9830000558 0
20120805 9830000558 500
20120811 9830000558 300
20120813 9830000558 350
20120820 9830000558 650
20120823 9830000558 300

в таком формате
23 фев 13, 22:46    [13971611]     Ответить | Цитировать Сообщить модератору
 Re: формирование остатков  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
noTpyJI
Cygapb-007
что-то вроде
join table1 t on t.schet=a.schet

что на что join делать? саму на себя? Не совсем пример понятен
разворачиваем одну строку движения денег в две строки вида
дата, счет куда, +сумма
дата, счет откуда, -сумма

Далее обычный накопительный итог для таблицы счетов
23 фев 13, 22:47    [13971615]     Ответить | Цитировать Сообщить модератору
 Re: формирование остатков  [new]
noTpyJI
Member

Откуда:
Сообщений: 116
Cygapb-007,

select a.* from table2 t2
cross apply(
  select t2.ddate, t2.to_schet, +summ
  union all
  select t2.ddate, t2.from_scet, -summ
  )a
join table2 t2 on t2.scet=a.schet
order by id_accaunt desc


результат
2012-08-05 00:00:00.000 9830000558 500,00
2012-08-11 00:00:00.000 9830000558 -200,00
2012-08-13 00:00:00.000 9830000558 50,00
2012-08-23 00:00:00.000 9830000558 300,00
2012-08-23 00:00:00.000 9830000558 -350,00
2012-08-23 00:00:00.000 9830000367 -300,00
2012-08-23 00:00:00.000 9830000367 350,00
2012-08-13 00:00:00.000 9830000367 -50,00
2012-08-05 00:00:00.000 9830000367 -500,00
2012-08-11 00:00:00.000 9830000367 200,00


как то не совсем то что нужно
23 фев 13, 23:07    [13971676]     Ответить | Цитировать Сообщить модератору
 Re: формирование остатков  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
покурите Предложение OVER (Transact-SQL), примеры с ROWS UNBOUNDED PRECEDING
после SQL-EX.ru тяжко соображается:))
23 фев 13, 23:31    [13971785]     Ответить | Цитировать Сообщить модератору
 Re: формирование остатков  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
как-то так...
with CTE as (
  select a.schet,a.date, sum(a.summa)summa
  from TABLE2 t2
  cross apply(
    select t2.date, t2.schet_to schet, ts.summa 
    union all
    select t2.date, t2.schet_from, -ts.summa 
    )a
  group by a.schet,a.date
  )
select
  e.schet, e.date, e.summa, 
  t1.summa+(select sum(summa) from CTE where date<=e.date and schet=e.schet) total
from CTE e
join TABLE1 t1 on t1.schet=e.schet
order by e.schet, e.date
24 фев 13, 01:19    [13972087]     Ответить | Цитировать Сообщить модератору
 Re: формирование остатков  [new]
MiCe
Member

Откуда: RUSSIA STAVROPOL Pyatigorsk
Сообщений: 1996
нарастающий итог
фак ))
25 фев 13, 01:54    [13974142]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить