ИнфоАптека ®

Автоматизация аптек и аптечных сетей

Инструменты пользователя

Инструменты сайта


user:vmsirenko:количество_стопов_в_ап_и_продажи_по_ним_с_начала_месяца

Количество СТОПов в АП и продажи по ним с начала месяца

Поставлена задача - посчитать в Ассортиментном плане (АП), по каждой аптеке, в статусе СТОП:

  • количество позиций,
  • количество штук в остатках,
  • количество штук проданных с начала месяца.

SQL запрос

В запросе пришлось объединить две выборки из АП и документов, затем из полученного результата отобрать только те, что входят в АП.

SELECT
  dp.dep_name,
  COUNT(med),
  SUM(stock) AS stock_qtty,
  abs(SUM(sale)) AS sum_sale
FROM (
WITH xdocs AS (
  SELECT
    dg.dep_id,
    a.med_id AS med,
    1 STATUS,
    a.stock_qtty AS stock,
    0 AS sale
  FROM assort a
    INNER JOIN medicine m ON a.med_id = m.med_id
    INNER JOIN depgroup dg ON a.dgroup_id = dg.dgroup_id
  WHERE a.status='X'
 
  UNION ALL
  SELECT
    d.dep_id,
    COALESCE(m.analog_id,m.med_id) AS med,
    2 STATUS,
    0 AS stock,
    SUM(di.qtty/di.divisor) AS sale
  FROM docs d
  INNER JOIN docitem di ON d.doc_id=di.doc_id
  INNER JOIN items it ON di.iid=it.iid
  INNER JOIN medicine m ON it.med_id=m.med_id
  WHERE d.doctype=40
    AND d.docdate>=dateadd(DAY, EXTRACT(DAY FROM CURRENT_DATE)*-1+1, CURRENT_DATE)
  GROUP BY 1,2
)
SELECT
  xdocs.dep_id,
  xdocs.med,
  SUM(xdocs.status) STATUS,
  SUM(xdocs.stock) AS stock,
  SUM(xdocs.sale) AS sale
FROM xdocs
GROUP BY 1,2
) sumap
INNER JOIN department dp ON sumap.dep_id=dp.dep_id
WHERE STATUS=3
   OR STATUS=1
GROUP BY 1
Только авторизованные участники могут оставлять комментарии.
user/vmsirenko/количество_стопов_в_ап_и_продажи_по_ним_с_начала_месяца.txt · Последние изменения: 2017/07/31 19:48 — Владимир Сиренко