Hi Sir,
Great DAy!
May I ask your help on SQL please.
I have tables like
trn_Beginning_Inventory
trn_Beginning_Inventory_Adjustment
trn_PurchaseOrder_Detail
trn_SalesOrder_Detail
trn_SalesReturn_Detail
trn_StockReturn_Detail
trn_StockTransfer_Detail
trn_StockTransfer_Receiving_Detail
I want to get the running inventory using SQL statement. Right now, here is my sql codes:
SELECT
'All State' AS Stock_State ,*
FROM
(
SELECT
f.ItemGroup,
f.ItemType,
f.ItemBrand,
f.ItemCode,
f.[Description],
f.Beginning_Inventory_Date,
f.Beginning_Inventory_Qty,
f.Purchased_Qty,
f.Sales_Qty,
f.SalesReturn_Qty,
f.StockReturn_Qty,
f.STOutgoing_Qty,
f.STIncoming_Qty,
f.Inventory
FROM
(
SELECT
s.ItemGroup,
s.ItemType,
s.ItemBrand,
s.ItemCode,
s.[Description],
s.Beginning_Inventory_Date,
s.Beginning_Inventory_Qty,
s.Purchased_Qty,
isnull(SUM(sd.Sales_Qty),0) AS Sales_Qty,
isnull(SUM(sr.SalesReturn_Qty),0) AS SalesReturn_Qty,
isnull(SUM(r.StockReturn_Qty),0) AS StockReturn_Qty,
isnull(SUM(t.STOutgoing_Qty),0) AS STOutgoing_Qty,
isnull(SUM(d.STIncoming_Qty),0) AS STIncoming_Qty,
(
s.Beginning_Inventory_Qty + s.Purchased_Qty
)- isnull(SUM(sd.Sales_Qty), 0)+isnull(SUM(sr.SalesReturn_Qty), 0)- isnull(SUM(r.StockReturn_Qty),0)-isnull(SUM(t.STOutgoing_Qty),0)+isnull(SUM(d.STIncoming_Qty),0)AS Inventory
FROM
(
SELECT
i.ItemGroup,
i.ItemType,
i.ItemBrand,
i.ItemCode,
i.[Description],
i.Beginning_Inventory_Date,
i.Beginning_Inventory_Qty,
SUM(Isnull(p.Purchased_Qty, 0))AS Purchased_Qty
FROM
(
SELECT
i.ItemGroup,
i.ItemType,
i.ItemBrand,
i.ItemCode,
i.[Description],
CASE
WHEN i.Adjustment_Qty <= 0 THEN
i.Beginning_Date
ELSE
i.Adjustment_Date
END AS Beginning_Inventory_Date,
CASE
WHEN i.Adjustment_Qty <= 0 THEN
i.Beginning_Qty
ELSE
i.Adjustment_Qty
END AS Beginning_Inventory_Qty
FROM
(
SELECT
im.*, Isnull(ad.Adjustment_Qty, 0)AS Adjustment_Qty
FROM
(
SELECT
ig.[Description] AS ItemGroup,
it.[Description] AS ItemType,
ib.[Description] AS ItemBrand,
im.ItemCode,
im.[Description],
(
SELECT
MAX(bi.[TransDate])AS [TransDate]
FROM
trn_Beginning_Inventory bi(nolock)
)AS Beginning_Date,
Isnull(
(
SELECT
MAX(bia.[TransDate])AS [TransDate]
FROM
trn_Beginning_Inventory_Adjustment bia(nolock)
WHERE
bia.ItemCode = im.ItemCode
),
(
SELECT
MAX(bi.[TransDate])AS [TransDate]
FROM
trn_Beginning_Inventory bi(nolock)
)
)AS Adjustment_Date,
Isnull(bi.Beginning_Inventory, 0)AS Beginning_Qty
FROM
tblMst_Item im(nolock)
LEFT OUTER JOIN tblMst_ItemGroup ig ON im.ItemGroupCode = ig.ItemGroupCode
LEFT OUTER JOIN tblMst_ItemType it ON im.ItemTypeCode = it.ItemTypeCode
LEFT OUTER JOIN tblMst_ItemBrand ib ON im.BrandCode = ib.BrandCode
LEFT OUTER JOIN(
SELECT
bi.ItemCode,
bi.Qty AS Beginning_Inventory
FROM
trn_Beginning_Inventory bi(nolock)
)bi ON im.ItemCode = bi.ItemCode
WHERE
im.Discontinued = 'N'
)im
LEFT OUTER JOIN(
SELECT
bia.ItemCode,
bia.[TransDate] AS Adjustment_Date,
bia.Qty AS Adjustment_Qty
FROM
trn_Beginning_Inventory_Adjustment bia(nolock)
)ad ON im.ItemCode = ad.ItemCode
AND im.Adjustment_Date = ad.Adjustment_Date
)i
)i
LEFT OUTER JOIN(
SELECT
pm.[TransDate] AS Purchased_Date,
pd.ItemCode,
SUM(pd.Qty)AS Purchased_Qty
FROM
trn_PurchaseOrder_Detail pd(nolock)
JOIN trn_PurchaseOrder_Header pm(nolock)ON pd.PurchaseCode = pm.PurchaseCode
AND pm.StatusCode = 'PS'
GROUP BY
pm.[TransDate],
pd.ItemCode
)p ON i.ItemCode = p.ItemCode
AND p.[Purchased_Date] > i.Beginning_Inventory_Date
GROUP BY
i.ItemGroup,
i.ItemType,
i.ItemBrand,
i.ItemCode,
i.[Description],
i.Beginning_Inventory_Date,
Beginning_Inventory_Qty
)s
LEFT OUTER JOIN(
SELECT
pm.[TransDate] AS TransDate,
pd.ItemCode,
SUM(pd.Qty)AS Sales_Qty
FROM
trn_SalesOrder_Detail pd(nolock)
JOIN trn_SalesOrder_Header pm(nolock)ON pd.SalesOrderCode = pm.SalesOrderCode
AND pm.StatusCode = 'PS'
GROUP BY
pm.[TransDate],
pd.ItemCode)sd ON s.ItemCode=sd.Itemcode
AND sd.[TransDate] > s.Beginning_Inventory_Date
LEFT OUTER JOIN(
SELECT
pm.[TransDate] AS TransDate,
pd.ItemCode,
SUM(pd.Qty)AS SalesReturn_Qty
FROM
trn_SalesReturn_Detail pd(nolock)
JOIN trn_SalesReturn_Header pm(nolock)ON pd.SalesReturnCode = pm.SalesReturnCode
AND pm.StatusCode = 'PS'
GROUP BY
pm.[TransDate],
pd.ItemCode)sr ON s.ItemCode=sr.Itemcode
AND sr.[TransDate] > s.Beginning_Inventory_Date
LEFT OUTER JOIN(
SELECT
pm.[TransDate] AS TransDate,
pd.ItemCode,
SUM(pd.Qty)AS StockReturn_Qty
FROM
trn_StockReturn_Detail pd(nolock)
JOIN trn_StockReturn_Header pm(nolock)ON pd.StockReturnCode = pm.StockReturnCode
AND pm.StatusCode = 'PS'
GROUP BY
pm.[TransDate],
pd.ItemCode)r ON s.ItemCode=r.Itemcode
AND r.[TransDate] > s.Beginning_Inventory_Date
LEFT OUTER JOIN(
SELECT
pm.[TransDate] AS TransDate,
pd.ItemCode,
SUM(pd.Qty)AS STOutgoing_Qty
FROM
trn_StockTransfer_Detail pd(nolock)
JOIN trn_StockTransfer_Header pm(nolock)ON pd.TransferCode = pm.TransferCode
AND pm.StatusCode = 'PS'
GROUP BY
pm.[TransDate],
pd.ItemCode)t ON s.ItemCode=t.Itemcode
AND t.[TransDate] > s.Beginning_Inventory_Date
LEFT OUTER JOIN(
SELECT
pm.[TransDate] AS TransDate,
pd.ItemCode,
SUM(pd.Qty)AS STIncoming_Qty
FROM
trn_StockTransfer_Receiving_Detail pd(nolock)
JOIN trn_StockTransfer_Receiving_Header pm(nolock)ON pd.ReceiptCode = pm.ReceiptCode
AND pm.StatusCode = 'PS'
GROUP BY
pm.[TransDate],
pd.ItemCode)d ON s.ItemCode=d.Itemcode
AND d.[TransDate] > s.Beginning_Inventory_Date
GROUP BY
s.ItemGroup,
s.ItemType,
s.ItemBrand,
s.ItemCode,
s.[Description],
s.Beginning_Inventory_Date,
s.Beginning_Inventory_Qty,
s.Purchased_Qty
)f
)f
WHERE
f.ItemCode IN(
160500084,
160500106,
160500107
)
But am not getting the correct output. I want that when i add inventory adjustment which has greater date than the other tables, the result will be the inventory adjustment qty.
Please help me achieve that sir. thank you
regards
leo