Reputation: 27
comp vol Volume ID Seg name
CSQ 9000 15000 ANSD-09-MN-02 EWW a
CSY 11000 15000 ANSD-09-MN-02 EWW a
CCB 0.020679 15 ANSD-09-W1-02 CID W
CID 0.868951 15 ANSD-09-W1-02 CID W
CSQ 9.919137 15 ANSD-09-W1-02 CID W
CSY 4.139181 15 ANSD-09-W1-02 CID W
I have a table like above. I want to write a query such that I have a table like:
Volume BatchID Seg Name Crucomp
15000 ANSD-09-MN-02 EWW a (CSQ-9000)(CSY-11000)
15000 ANSD-09-W1-02 CID W (CCB-0.020679)(CID-0.868951)(CSQ-9.919137 )(CSY-4.139181).
I don't have a column called crucomp
and the data in the crucomp is the concatenation of volume and composition for a particular ID.
I have tried different means for achieving the desired result but I am not able to get the desired result.
Need Help on this. Thanks
Upvotes: 2
Views: 100
Reputation: 69554
MS SQL Server 2014 Schema Setup:
Query 1:
DECLARE @TABLE TABLE(comp VARCHAR(20), vol VARCHAR(10), Volume INT,
ID VARCHAR(20), Seg VARCHAR(10),name VARCHAR(10))
INSERT INTO @TABLE VALUES
('CSQ' , '9000' , 15000 ,'ANSD-09-MN-02','EWW','a'),
('CSY' , '11000' , 15000 ,'ANSD-09-MN-02','EWW','a'),
('CCB' , '0.020679', 15 ,'ANSD-09-W1-02','CID','W'),
('CID' , '0.868951', 15 ,'ANSD-09-W1-02','CID','W'),
('CSQ' , '9.919137', 15 ,'ANSD-09-W1-02','CID','W'),
('CSY' , '4.139181', 15 ,'ANSD-09-W1-02','CID','W')
SELECT t.Volume
,t.ID AS BatchID
,t.Seg
,t.name
,STUFF((SELECT '(' + comp + '-'+ Vol + ')'
FROM @TABLE
WHERE Volume = t.Volume AND Seg = t.Seg
AND ID = t.ID AND name = t.name
FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,0,'') AS Crucomp
FROM @TABLE t
GROUP BY t.Volume
,t.ID
,t.Seg
,t.name
ORDER BY t.Volume DESC
| Volume | BatchID | Seg | name | Crucomp
|--------|---------------|-----|------|----------------------------------------------------------|
| 15000 | ANSD-09-MN-02 | EWW | a | (CSQ-9000)(CSY-11000)
| 15 | ANSD-09-W1-02 | CID | W | (CCB-0.020679)(CID-0.868951)(CSQ-9.919137)(CSY-4.139181) |
Upvotes: 1