Look at your sub-query
SELECT Inward.Item, Inward.Category, Sum (Inward.P_Qty) From Inward GROUP BY Inward.Item, Inward.Category, Inward.Brand
It is returning 3 columns in the result set, yet you are trying to assign all three values to a single column in Netstock with
SET Netstock.P_Qty =
, which you simply can't do.
If this was SQL then you could simply write this query
UPDATE n
SET P_Qty = temp.total
FROM
Netstock n
INNER JOIN (SELECT Item, Category, Sum (P_Qty) as total From Inward GROUP BY Item, Category, Brand) temp ON temp.Item = n.item and temp.Category = n.Category and ...
but you have also tagged Access and that query won't work in Access - it will complain that the JOIN is not an updateable query, despite the fact you are only attempting to update one of the tables.
Instead you should write a QUERY for the sub-query
SELECT Item, Category, Sum (P_Qty) as total From @Inward GROUP BY Item, Category, Brand
and redirect the output into another table e.g. TempResults
SELECT Inward.Item, Inward.Category, Sum(Inward.P_Qty) AS total INTO TempResults
FROM Inward
GROUP BY Inward.Item, Inward.Category, Inward.Brand;
You can then use that table in the join
UPDATE n
SET P_Qty = temp.total
FROM
Netstock n
INNER JOIN tempResults t ON t.Item = n.item and t.Category = n.Category and ...
The next step is to look to normalise your tables - you are repeating too much information about each item across multiple tables