ИнфоАптека ®

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

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

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


user:vmsirenko:дефектура_у_поставщиков

Дефектура у поставщиков

Поставлена задача формирования отчета, в который должны попасть все наименования из справочника «Товары» (за исключением не активных), которые либо вообще отсутствуют у всех поставщиков, либо есть но с истекающим сроком годности (4 месяца).

Позиции, по которым одновременно есть предложения с нормальным сроком годности и есть с ограниченным соком в отчет попадать не должны.

SQL запрос

WITH xdocs AS (
SELECT
  med.med_id,
  0 AS qtty,
  NULL AS valid_date
FROM medicine med
  LEFT JOIN plitem pli ON pli.med_id=med.med_id
WHERE med.isactive=1
  AND pli.med_id IS NULL
 
UNION ALL
 
SELECT
  pls.med_id,
  pls.qtty,
  pls.valid_date
FROM (
SELECT
  pli.med_id,
  SUM(pli.qtty) AS qtty,
  MAX(pli.valid_date) AS valid_date
FROM plitem pli
  LEFT JOIN plist pl ON pl.plid=pli.plid
WHERE pli.med_id IS NOT NULL
  AND pl.isactive=1
GROUP BY 1) pls
WHERE pls.valid_date<dateadd(MONTH, 4, CURRENT_DATE)
)
 
SELECT
 CURRENT_DATE,
 xdocs.med_id,
 med.med_name,
 dis.distributor_name,
 pli.qtty,
 pli.valid_date,
 pl.plid,
 pl.pl_name,
 pn.partner_name
FROM xdocs
  INNER JOIN medicine med ON med.med_id=xdocs.med_id
  LEFT JOIN distributor dis ON dis.distributor_id=med.distributor_id
  LEFT JOIN plitem pli ON pli.med_id=xdocs.med_id
  LEFT JOIN plist pl ON pl.plid=pli.plid
  LEFT JOIN partners pn ON pn.partner_id=pl.supplier_id
WHERE pl.isactive=1
   OR pl.plid IS NULL
ORDER BY 3
Только авторизованные участники могут оставлять комментарии.
user/vmsirenko/дефектура_у_поставщиков.txt · Последние изменения: 2018/02/22 10:36 — Владимир Сиренко