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

Откуда:
Сообщений: 2
Добрый день!
Уверен, что задам вопрос, который уже тут неоднократно проскакивал, однако если кому не лень ответить, буду очень признателен.
Есть таблица движения товаров:
Period (date)
Tovar (наименование товара)
Sklad (наименование склада)
MoveType (тип движения "+" приход , "-" - расход)
Qty (количество единиц)

Задача такова: по данной таблице постоить таблицу остатков товаров на складах
Period (date)
Tovar (наименование товара)
Sklad (наименование склада)
QtyStart (начальный остаток)
QtyInCom (приход)
QtyOutCom (расход)
QtyBeg (конечный остаток)

Заранее благодарен.
28 мар 03, 19:46    [159637]     Ответить | Цитировать Сообщить модератору
 Re: Только начал изучать. Нужна помощь..  [new]
Некто
Member

Откуда: Киев
Сообщений: 312
однако если кому не лень ответить, буду очень признателен.

Лень :-(
FAQ
Нарастающие итоги

Ежели не оросит, приведите скрипт со структурой таблиц и вставкой тестовых данных.
28 мар 03, 19:57    [159640]     Ответить | Цитировать Сообщить модератору
 Re: Только начал изучать. Нужна помощь..  [new]
molodoy
Member

Откуда:
Сообщений: 2
Пасибо!!
28 мар 03, 20:17    [159650]     Ответить | Цитировать Сообщить модератору
 Re: Только начал изучать. Нужна помощь..  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145719
Некто не правильно понял вопрос.
Оборотно-сальдовая ведомость строится так

Насколько я понял, в Movetype хранится или 1, или -1


create table mytable (Period datetime,Sklad int, Tovar char, Qty int, Movetype tinyint)

go
declare @FirstDate datetime
declare @LastDate datetime

select Sklad,Tovar, sum(QtyStart) as QtyStart,
sum(QtyInCom) as QtyInCom, sum(QtyOutCom) as QtyOutCom,
sum(QtyStart+QtyInCom-QtyOutCom) as QtyBeg
from
(
select Sklad,Tovar,
sum(MoveType*Qty) as QtyStart, 0 as QtyInCom, 0 as QtyOutCom
from mytable
where period<@FirstDate
group by Sklad,Tovar
union
select Sklad,Tovar,
0, sum(case MoveType when 1 then 0 else Qty end),
sum(case MoveType when 1 then Qty else 0 end)
from mytable
where period between @FirstDate and @LastDate
group by Sklad,Tovar
) as t
group by Sklad,Tovar
go
drop table mytable
29 мар 03, 17:07    [159904]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить