SELECT t.* FROM( SELECT r.warehouse_id, w.name as warehouse_name, r.material_id, r.vendor_id, v.vendor_name, m.material_code, m.material_name, m.material_specifications, m.material_unit, m.material_brand, m.procurement_subject, m.compatible_with, m.material_warranty_period,m.reference_price, m.selling_price, m.material_url, IFNULL(put.putNumber,0) AS putNumber, IFNULL(ret.retNumber,0) AS retNumber, IFNULL(pic.picNumber,0) AS picNumber, IFNULL(bac.bacNumber,0) AS bacNumber, IFNULL(put.putNumber,0) - IFNULL(ret.retNumber,0) - IFNULL(pic.picNumber,0) + IFNULL(bac.bacNumber,0) AS inventory FROM erp_material_inventory_record r LEFT JOIN erp_material m ON r.material_id = m.id LEFT JOIN erp_warehouse w ON r.warehouse_id = w.id LEFT JOIN erp_material_vendor v ON r.vendor_id = v.id LEFT JOIN(SELECT warehouse_id, material_id, vendor_id, SUM(number) AS putNumber FROM erp_material_inventory_record WHERE type = '1' GROUP BY warehouse_id, material_id, vendor_id) put ON r.warehouse_id = put.warehouse_id AND r.material_id = put.material_id AND r.vendor_id = put.vendor_id LEFT JOIN(SELECT warehouse_id, material_id, vendor_id, SUM(number) AS retNumber FROM erp_material_inventory_record WHERE type = '2' GROUP BY warehouse_id, material_id, vendor_id) ret ON r.warehouse_id = ret.warehouse_id AND r.material_id = ret.material_id AND r.vendor_id = ret.vendor_id LEFT JOIN(SELECT warehouse_id, material_id, vendor_id, SUM(number) AS picNumber FROM erp_material_inventory_record WHERE type = '3' GROUP BY warehouse_id, material_id, vendor_id) pic ON r.warehouse_id = pic.warehouse_id AND r.material_id = pic.material_id AND r.vendor_id = pic.vendor_id LEFT JOIN(SELECT warehouse_id, material_id, vendor_id, SUM(number) AS bacNumber FROM erp_material_inventory_record WHERE type = '4' GROUP BY warehouse_id, material_id, vendor_id) bac ON r.warehouse_id = bac.warehouse_id AND r.material_id = bac.material_id AND r.vendor_id = bac.vendor_id GROUP BY r.warehouse_id, r.material_id, r.vendor_id ) t