Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TABLE deliveries (
- docid INT,
- itemid INT,
- date_deliv DATE,
- quant INT
- );
- INSERT INTO deliveries (docid, itemid, date_deliv, quant)
- VALUES
- (1001, 1, '2019-01-01', 5),
- (1001, 2, '2019-01-01', 15),
- (1002, 1, '2019-01-02', 13),
- (1002, 2, '2019-01-02', 11),
- (1002, 3, '2019-01-02', 7),
- (1002, 4, '2019-01-02', 21),
- (1003, 1, '2019-01-04', 11),
- (1003, 2, '2019-01-04', 12),
- (1003, 3, '2019-01-04', 36),
- (1004, 1, '2019-01-02', 28);
- CREATE TABLE status_delivery (
- docid INT,
- itemid INT,
- status_type VARCHAR(100),
- status_pos VARCHAR(100)
- );
- INSERT INTO status_delivery (docid, itemid, status_type, status_pos)
- VALUES
- (1001, 1, 'Приёмка на склад', 'Завершено'),
- (1004, 1, 'Приёмка на склад', 'Завершено'),
- (1004, 1, 'Разгрузка', 'Завершено'),
- (1001, 1, 'Складское действие', 'Не начато'),
- (1001, 1, 'Исполнение', 'Завершено'),
- (1002, 1, 'Разгрузка', 'Завершено'),
- (1002, 2, 'Приёмка на склад', 'Не начато'),
- (1002, 1, 'Поступление', 'Завершено'),
- (1001, 1, 'Поступление', 'Завершено'),
- (1001, 2, 'Приёмка на склад', 'Завершено'),
- (1001, 1, 'Разгрузка', 'Завершено'),
- (1002, 1, 'Складское действие', 'Завершено'),
- (1004, 3, 'Поступление', 'Не начато'),
- (1002, 1, 'Приёмка на склад', 'Завершено'),
- (1004, 1, 'Складское действие', 'Завершено'),
- (1004, 2, 'Поступление', 'Не начато'),
- (1004, 1, 'Поступление', 'Завершено');
- SELECT SUM(fact.quant)
- FROM (SELECT
- docid,
- itemid,
- SUM(CASE
- WHEN status_type IN ('Приёмка на склад','Разгрузка','Складское действие','Поступление') AND status_pos = 'Завершено' THEN 1
- END) AS flag
- FROM status_delivery
- GROUP BY docid, itemid
- ) AS stat
- LEFT JOIN deliveries AS fact
- ON stat.docid = fact.docid
- AND stat.itemid = fact.itemid
- AND stat.flag = 4;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement