Я изменил вашу скрипку . Я изменил один подход к вашей существующей таблице, вам нужно указать detail_id, где бы он ни был, чтобы мы могли сгруппировать результат по этому.
Окончательный запрос будет выглядеть следующим образом:
select detail_id, item,
(in_sum - out_sum) as `sum(quantity)` from
(SELECT
detail_id,
item,
sum(case when type=1 then quantity else 0 end) as in_sum,
sum(case when type=0 then quantity else 0 end) as out_sum
FROM details
group by detail_id, item) tab
Сначала получите сумму количества для указанного типа, сгруппировав его по detail_id, item, а затем используйте этот результат для вычисления окончательного результата.