اما برای نرمال کردن جداول باید یک جدول کدینگ داشته باشیم و فیلد description رو از جدول های in و out حذف کنیم:

SELECT
ItemCode,
Description
INTO Items
FROM in_wh
GROUP BY ItemCode, Description


7.png

حالا برای گرفتن description کوئری پست قبلی رو با این جدول join میکنیم:
SELECT
input.ItemCode,
Items.Description,
input.Q AS [Quantity In],
output.Q AS [Quantity Out],
Input.Q - Nz(output.Q, 0) AS [Stock Balance],
input.N AS [Count In],
output.N AS [Count Out]
FROM
(
(
SELECT
ItemCode,
Sum(InQty) AS Q,
Count(ID) AS N
FROM
in_wh
GROUP BY
ItemCode
) AS [input]
LEFT JOIN (
SELECT
ItemCode,
Sum(OutQty) AS Q,
Count(ID) AS N
FROM
out_wh
GROUP BY
ItemCode
) AS [output] ON input.ItemCode = output.ItemCode
)
LEFT JOIN Items ON input.itemcode = Items.itemcode


حالا هم دیتا تکراری و بدردنخور نداریم (کاهش چشمگیر اندازه فایل دیتابیس)
هم عملیات سریعتر هست
و از همه مهمتر یکپارچگی دیتا رو داریم.