Thursday, December 12

Miscellaneous Tasks 2

CREATE TABLE Items
(
Id               INT,
Name         VARCHAR(50),
Cost          MONEY
);


INSERT INTO Items VALUES 
(1, 'Pen', 20),(1, 'Pencil', 30),
(2, 'Pencil', 30),(3, 'Pen', 30),
(3, 'Pencil', 40),(4, 'Pen', 30),
(5, 'Paper', 40),(5, 'Pencil', 30),
(6, 'Pencil', 40);


Select * from  Items;

Id     
Name
Cost        
1
Pen
20.00
1
Pencil
30.00
2
Pencil
30.00
3
Pen
30.00
3
Pencil
40.00
4
Pen
30.00
5
Paper
40.00
5
Pencil
30.00
6
Pencil
40.00

The Output should be,

Product
Number_of_Product
Total_Cost        
Pencil
2
70.00
Pen
1
30.00
Pencil/Paper
1
70.00
Pencil/Pen
2
120.00



Solution:

select distinct(Product),COUNT( distinct(Id)) as   
[Number_of_Product],sum(cost) as Total_Cost from   
(                                                  
select                                             
STUFF((Select '/'+ Name                            
from Items t1                                      
where t1.Id=t2.Id                                  
FOR XML PATH('')),1,1,'')                          
as Product,Cost,Id from Items  t2)gsf              
group by Product