USE harish_sample
go
DROP TABLE dog
go
CREATE TABLE dog
(
NAME VARCHAR(100),
qty INT,
color VARCHAR(100)
)
go
INSERT INTO dog
SELECT 'LALA',
3,
'BLACK'
INSERT INTO dog
SELECT 'LALA',
4,
'WHITE'
INSERT INTO dog
SELECT 'LALA',
5,
'WHITE'
go
SELECT *
FROM dog
go
SELECT ( (SELECT Sum(qty)
FROM dog
WHERE color = 'WHITE') - (SELECT Sum(qty)
FROM dog
WHERE color = 'BLACK') )
You can do this with a single group by:
Declare @dog Table (name varchar(100), Qty int, Color varchar(10));
Insert Into @dog (name, Qty, color)
Values ('LALA', 3, 'BLACK')
, ('LALA', 4, 'WHITE')
, ('LALA', 5, 'WHITE');
Select *
From @dog;
Select name
, Total = sum(iif(d.Color = 'BLACK', -1, 1) * d.Qty)
From @dog d
Group By
name;
The condition will force the values for BLACK to be negative - and all other values to be positive.