Reputation: 33
Select A.nEvrakKalemID As ID,
A.cEvrakKalem As [Inventory Name],
SUM((IsNull((Select SUM(B.nMiktar) Where B.nEvrakTip = 3 or B.nEvrakTip = 7),0)) - (IsNull((Select SUM(B.nMiktar) Where B.nEvrakTip = 4 or B.nEvrakTip = 8),0))) As Inventory
From MasrafAnaliz.dbo.EvrakKalem A
Left Outer Join MasrafAnaliz.dbo.EvrakKalemHareket B
On B.nKodEvrakKalem = A.nEvrakKalemID
Group By A.nEvrakKalemID, A.cEvrakKalem, B.nMiktar
Order By A.nEvrakKalemID
In the above question I want to sum up the Inventory
column and group it according to the column nEvrakKalemID
.
But it does not work. Thank you in advance for your help.
Upvotes: 3
Views: 43
Reputation: 7107
I think your query should be
SELECT
A.nEvrakKalemID AS ID,
A.cEvrakKalem AS [Inventory Name],
SUM(ISNULL((SELECT
B.nMiktar
WHERE B.nEvrakTip = 3
OR B.nEvrakTip = 7), 0) - ISNULL((SELECT
B.nMiktar
WHERE B.nEvrakTip = 4
OR B.nEvrakTip = 8), 0)) AS Inventory
FROM MasrafAnaliz.dbo.EvrakKalem A
LEFT OUTER JOIN MasrafAnaliz.dbo.EvrakKalemHareket B
ON B.nKodEvrakKalem = A.nEvrakKalemID
GROUP BY A.nEvrakKalemID,
A.cEvrakKalem,
B.nMiktar
ORDER BY A.nEvrakKalemID
Using CASE
will be the better option.
Upvotes: 0
Reputation: 12309
Try this :
Select A.nEvrakKalemID As ID,
A.cEvrakKalem As [Inventory Name],
(SUM(CASE WHEN B.nEvrakTip = 3 or B.nEvrakTip = 7
THEN (IsNull(B.nMiktar,0))
ELSE 0
END) -
SUM(CASE WHEN B.nEvrakTip = 4 or B.nEvrakTip = 8
THEN IsNull(B.nMiktar,0)
ELSE 0
END)) As Inventory
From MasrafAnaliz.dbo.EvrakKalem A
Left Outer Join MasrafAnaliz.dbo.EvrakKalemHareket B On B.nKodEvrakKalem = A.nEvrakKalemID
Group By A.nEvrakKalemID, A.cEvrakKalem, B.nMiktar
Order By A.nEvrakKalemID
Upvotes: 1