06.07.2007 12:35
не подход странный, а работаю всего третий день, с СМ.
Мне сказали сделать репорт, я делаю, дали структуру, остальное не мое дело, и это не мое решение
06.07.2007 12:49
Я так понимаю, что человек просто спрашивал как получить остатки на дату. Ведь не обязательно для этого считать статистику.
Тут 2 варианта:
1. считать все приходы с самого начала и отнимать от них все расходы, то же с самого начала.
2. считать все приходы и расходы с конца до указанной даты и отнимать их от кол-ва указанного в SMGoods.
На сколько я помню и тот и другой запрос уже проскакивали сдесь на форуме.
06.07.2007 12:51
пасибо за понимание, а ссылочку, или имя топика
10.07.2007 11:49
FFMapRep и проделать предложенное YuraZ, токмо не с самого начала, а с суказанной даты.
Поможет?
10.07.2007 13:46
Я получал остатки на дату таким вот запросом:
Код:
SELECT c.article as "Артикул",
       c.name as "Наименование",
       NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0) as "Остаток"
  FROM supermag.smcard c,
       supermag.smgoods q,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate>=2
           AND TO_DATE(d.createdat) >= ('03.07.2007')
           AND d.locationto = (4)
        GROUP BY dc.article
       ) pr,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate>=2
           AND TO_DATE(d.createdat) >= ('03.07.2007')
           AND d.locationfrom = (4)
        GROUP BY dc.article
       ) rs
 WHERE c.article=pr.article(+)
   AND c.article=rs.article(+)
   AND c.article=q.article(+)
   AND q.storeloc=(4)
Обрати внимание, что в запросе в двух местах нужно подставить нужную дату и в трех местах код места хранения.
В моей базе запрос выполнился за 1,52 секунды.
11.07.2007 12:48
как теперь посчитать $
ведь цена могёт меняться, где её смотреть на нужную дату
я имею ввиду цену соответствующую q.quantity
11.07.2007 14:05
Код:
SELECT c.article as "Артикул",
       c.name as "Наименование",
       NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0) as "Остаток",
       NVL(p.price,0)-NVL(pr.totalprice,0)+NVL(rs.totalprice,0) as "money"
  FROM supermag.smcard c,
       supermag.smgoods q,
       supermag.smprices p,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity,
               SUM(dc.totalprice) as totalprice
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate>=2
           AND TO_DATE(d.createdat) >= ('01.07.2007')
           AND d.locationto = (2)
        GROUP BY dc.article
       ) pr,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity,
               SUM(dc.totalprice) as totalprice
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate>=2
           AND TO_DATE(d.createdat) >= ('01.07.2007')
           AND d.locationfrom = (2)
        GROUP BY dc.article
       ) rs
 WHERE c.article=pr.article(+)
   AND c.article=rs.article(+)
   AND c.article=q.article(+)
   AND c.article=p.article(+)
   AND q.storeloc=(2)
   AND p.storeloc=(2)
   AND UPPER(c.name) LIKE '%ГАЗЕТА%'
где не так?
11.07.2007 14:13
Цитата:
nekrom@nt.grave как теперь посчитать $
ведь цена могёт меняться, где её смотреть на нужную дату
я имею ввиду цену соответствующую q.quantity
табличка smpricehistory содержит историю цен
11.07.2007 14:15
Цитата:
nekrom@nt.grave где не так?
Так и хочется ответить - в ДНК.

В smspec хранится цена из документа. Для приходной накладной - цена поставщика, для расходной и Z-отчета - цена продажи.

Просто подставляя цены ты получаешь большую и красивую кашу...
Для того, чтобы получить нормальный ответ, надо его нормально задать.
В твоем случае, понять, в каких ценах тебе нужны остатки на дату...
Часовой пояс GMT +3, время: 18:30.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.