Advertisement
korenizla

sap_task3

Aug 4th, 2023
1,342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.28 KB | None | 0 0
  1. CREATE TABLE deliveries (
  2.   docid INT,
  3.   itemid INT,
  4.   date_deliv DATE,
  5.   quant INT
  6. );
  7. INSERT INTO deliveries (docid, itemid, date_deliv, quant)
  8. VALUES
  9.     (1001,  1,  '2019-01-01',   5),
  10.     (1001,  2,  '2019-01-01',   15),
  11.     (1002,  1,  '2019-01-02',   13),
  12.     (1002,  2,  '2019-01-02',   11),
  13.     (1002,  3,  '2019-01-02',   7),
  14.     (1002,  4,  '2019-01-02',   21),
  15.     (1003,  1,  '2019-01-04',   11),
  16.     (1003,  2,  '2019-01-04',   12),
  17.     (1003,  3,  '2019-01-04',   36),
  18.     (1004,  1,  '2019-01-02',   28);  
  19.  
  20. CREATE TABLE status_delivery (
  21.   docid INT,
  22.   itemid INT,
  23.   status_type VARCHAR(100),
  24.   status_pos VARCHAR(100)
  25. );
  26. INSERT INTO status_delivery (docid, itemid, status_type, status_pos)
  27. VALUES
  28.     (1001,  1,  'Приёмка на склад',   'Завершено'),
  29.     (1004,  1,  'Приёмка на склад',   'Завершено'),
  30.     (1004,  1,  'Разгрузка',   'Завершено'),
  31.     (1001,  1,  'Складское действие',  'Не начато'),
  32.     (1001,  1,  'Исполнение', 'Завершено'),
  33.     (1002,  1,  'Разгрузка',   'Завершено'),
  34.     (1002,  2,  'Приёмка на склад',   'Не начато'),
  35.     (1002,  1,  'Поступление',   'Завершено'),
  36.     (1001,  1,  'Поступление',   'Завершено'),
  37.     (1001,  2,  'Приёмка на склад',   'Завершено'),
  38.     (1001,  1,  'Разгрузка',   'Завершено'),
  39.     (1002,  1,  'Складское действие',  'Завершено'),
  40.     (1004,  3,  'Поступление',   'Не начато'),
  41.     (1002,  1,  'Приёмка на склад',   'Завершено'),
  42.     (1004,  1,  'Складское действие',  'Завершено'),
  43.     (1004,  2,  'Поступление',   'Не начато'),
  44.     (1004,  1,  'Поступление',   'Завершено');
  45.  
  46. SELECT SUM(fact.quant)
  47. FROM (SELECT
  48.     docid,
  49.     itemid,  
  50.     SUM(CASE
  51.           WHEN status_type IN ('Приёмка на склад','Разгрузка','Складское действие','Поступление') AND status_pos = 'Завершено' THEN 1
  52.         END) AS flag
  53.     FROM status_delivery
  54.     GROUP BY docid, itemid
  55.     ) AS stat
  56. LEFT JOIN deliveries AS fact
  57. ON stat.docid = fact.docid
  58.   AND stat.itemid = fact.itemid
  59.     AND stat.flag = 4;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement