Hi, Please take a look and tweak accordingly. You may pay attention to nulls and manipulate accordingly. Best of luck!
--Option 1
SELECT t2.ItemCode,( SUM(T2.TotalSales)-SUM(TotalCredits)) AS 'Total'
FROM
(
SELECT T0.ItemCode, SUM(T0.LineTotal) as 'TotalSales',SUM(0) as 'TotalCredits'
FROM INV1 as T0
WHERE T0.ItemCode = 'ACR2401010'
GROUP BY T0.ItemCode
UNION ALL
SELECT T1.ItemCode, SUM(0) as 'TotalSales', SUM(T1.LineTotal) as 'TotalCredits',
FROM RIN1 as T1
WHERE T1.ItemCode = 'ACR2401010'
GROUP BY T1.ItemCode
) AS t2
GROUP BY t2.ItemCode
--Option 2
SELECT t2.ItemCode, ( SUM(T2.TotalSales)-SUM(TotalCredits)) AS 'Total'
FROM
(
SELECT T0.ItemCode, SUM(T0.LineTotal) as 'TotalSales',SUM(0) as 'TotalCredits'
FROM INV1 as T0
--WHERE T0.ItemCode = 'ACR2401010'
GROUP BY T0.ItemCode
UNION ALL
SELECT T1.ItemCode, SUM(0) as 'TotalSales', SUM(T1.LineTotal) as 'TotalCredits',
FROM RIN1 as T1
--WHERE T1.ItemCode = 'ACR2401010'
GROUP BY T1.ItemCode
) AS t2
WHERE t2.ItemCode = 'ACR2401010'
GROUP BY t2.ItemCode
--Option 3
SELECT t2.ItemCode, ( SUM(T2.TotalSales)-SUM(TotalCredits) ) AS 'Total'
FROM
(
SELECT T0.ItemCode, T0.LineTotal as 'TotalSales', 0 as 'TotalCredits'
FROM INV1 as T0
UNION ALL
SELECT T1.ItemCode, 0 as 'TotalSales', T1.LineTotal as 'TotalCredits',
FROM RIN1 as T1
) AS t2
WHERE t2.ItemCode = 'ACR2401010'
GROUP BY t2.ItemCode
--Assuming credit part is optional..also assuming each table should return only one row else results would inflate...option 4
SELECT t0.ItemCode, ( SUM(T0.TotalSales)-SUM(T1.TotalSales)) AS 'Total'
FROM
INV1 as t0
left outer join
RIN1 as t1
ON t0.ItemCode = t1.ItemCode
WHERE t0.ItemCode = 'ACR2401010'
GROUP BY t0.ItemCode
--option 4 with grouping to ensure single row from each table
SELECT t0.ItemCode, ( isnull(T0.TotalSales,0)-isnull(T1.TotalSales,0)) AS 'Total'
FROM
(
SELECT T0.ItemCode, SUM(T0.LineTotal) as 'TotalSales'
FROM INV1 as T0
--WHERE T0.ItemCode = 'ACR2401010'
GROUP BY T0.ItemCode
)as t0
LEFT OUTER JOIN
( SELECT T1.ItemCode, SUM(T1.LineTotal) as 'TotalCredits',
FROM RIN1 as T1
--WHERE T1.ItemCode = 'ACR2401010'
GROUP BY T1.ItemCode
) as t1
ON t0.ItemCode = t1.ItemCode
WHERE t0.ItemCode = 'ACR2401010'
--Option 5 with grouping to ensure single row from each table.
--Also assuming that sales or credits can be optional
SELECT
ISNULL(t0.ItemCode,t0.ItemCode) AS ItemCode,
( isnull(T0.TotalSales,0)-isnull(T1.TotalSales,0)) AS 'Total'
FROM
(
SELECT T0.ItemCode, SUM(T0.LineTotal) as 'TotalSales'
FROM INV1 as T0
--WHERE T0.ItemCode = 'ACR2401010'
GROUP BY T0.ItemCode
)as t0
FULL OUTER JOIN
( SELECT T1.ItemCode, SUM(T1.LineTotal) as 'TotalCredits',
FROM RIN1 as T1
--WHERE T1.ItemCode = 'ACR2401010'
GROUP BY T1.ItemCode
) as t1
ON t0.ItemCode = t1.ItemCode
WHERE (t0.ItemCode = 'ACR2401010' OR t1.ItemCode = 'ACR2401010')
No comments:
Post a Comment