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