Я думаю, вы сначала захотите объединить данные, а затем сгруппировать их так, чтобы сумма пересекла множества. Вы можете сделать это с помощью CTE. Примерно так:
WITH CTE_Detail AS (
SELECT ItemId, ItemCode, Quantity FROM Purchase_Details
UNION ALL
SELECT ItemId, ItemCode, Quantity FROM Sale_Details
)
SELECT ItemId, ItemCode, SUM(Quantity) AS Quantity
FROM CTE_Detail
GROUP BY ItemId, ItemCode
Что касается вашего вопроса о том, «что лучше», то это зависит от того, как вы хотите его использовать. Очевидно, что в этом запросе есть небольшая дополнительная сложность, поскольку они разделены, но это может помочь вам в других областях. Я полагаю, вы сказали, что это взгляды, так что, неужели у вас не может быть обоих?