У меня есть таблица postgresql, содержащая перемещения разных предметов (моделей) между складами.
Например, следующая запись означает, что со склада 1 на склад 2 отправлено 5 единиц модели 1:
source target model units
------ ------ ----- -----
1 2 1 5
Я пытаюсь построить SQL-запрос, чтобы получить разницу между отправленными и полученными единицами, сгруппированными по моделям. Опять же на примере:
source target model units
------ ------ ----- -----
1 2 1 5 -- 5 sent from 1 to 2
1 2 2 1
2 1 1 2 -- 2 sent from 2 to 1
2 1 1 1 -- 1 more sent from 2 to 1
Результат должен быть:
source target model diff
------ ------ ----- ----
1 2 1 2 -- 5 sent minus 3 received
1 2 2 1
Интересно, возможно ли это с помощью одного SQL-запроса.
Вот скрипт создания таблицы и некоторые данные, на всякий случай, если кто-то захочет попробовать:
CREATE TEMP TABLE movements
(
source INTEGER,
target INTEGER,
model INTEGER,
units INTEGER
);
insert into movements values (1,2,1,5);
insert into movements values (1,2,2,1);
insert into movements values (2,1,1,2);
insert into movements values (2,1,1,1);