SSRS: How to Group Same Row Data with One Column Having Varying Data
This article is the outcome of my answer to this question in the SSRS forum.
Consider this sample data
DECLARE @sample_data table
(
[Year] varchar(5),
Emp_id varchar(30),
Name varchar(30),
Accomplishments varchar(30)
)
insert @sample_data values
('2007','Emp - 01','Sam','ALC Notes 1'),
('2007','Emp - 01','Sam','ALC Notes 2'),
('2007','Emp - 01','Sam','ALC Notes 3'),
('2007','Emp - 02','John',''),
('2007','Emp - 03','Mary',''),
('2007','Emp - 04','Akash','')
SELECT * FROM @sample_data
To group same row data with one column having varying data ,
I have used this T-SQL query :
SELECT Year,Emp_id,Name,
STUFF((SELECT ' | ' + Accomplishments
FROM @sample_data X WHERE X.Emp_id = Y.Emp_id GROUP BY Year,Emp_id,Name,Accomplishments
FOR XML PATH('')), 1, 2, '') Accomplishments
FROM @sample_data Y
GROUP BY Year,Emp_id,Name
To format the column with varying row data, in the report, I wrote an expression for Accomplishments column:
=Replace(Fields!Accomplishments.Value," |",VBCRLF)
See Also