Click here to Skip to main content
15,886,664 members
Articles / Database Development / SQL Server
Tip/Trick

Using SSRS - Matrix Control to Generate Columns Dynamically

Rate me:
Please Sign up or sign in to vote.
3.67/5 (4 votes)
9 Apr 2013CPOL2 min read 93.9K   8   11
This will help you generate columns dynamically in SSRS reports using Matrix control.

Scenario

In a support center there are agents who assist customers for solving their issues with company products. Company needs to track, amount of time spent by agents on various activities. Report is required in following format:

Image 1

Number and Name of Activities are not fixed in this report because:

  • New activities can be added
  • Existing activities can be modified

So, the columns “Time spent on Activity 1” to “Time spent on Activity N” need to be generated dynamically.

Solution

Table structure

Agent Table: Image 2

Activity Table:

Image 3
Agent Activity Mapping Table: Image 4

Query that gives me all Agent, Activity data:

SQL
SELECT A.AgentName, ACT.ActivityName, ASM.TimeInMinutes
 FROM   dbo.Agent_ActivityMapping ASM INNER JOIN dbo.Agent A  ON
  A.AgentID = ASM.AgentRef INNER JOIN dbo.Activity ACT  ON 
  ACT.ActivityID = ASM.ActivityRef

Image 5

Step 2: Right click on “Shared Data Source” folder in solution explorer and click on “Add New Data Source”:

Image 6

Step 3: Now right click on “Reports” folder in solution explorer and click on Add new item and select Report. I have named my report as “ActivityMatrix”

Step 4: Double click on report to open it. In Report Data pane, Right click on Dataset folder and Add Dataset. In this dataset, I have used the same query that we had created to fetch all the Agent-Activity data.

Image 7

Step 5: Now insert a Matrix onto the report.

Image 8

Step 6: Now drag Agent name into data section of first column. Drag ActivityName into header of second column. That is because result of Activity element will give us the column names. It will look something like this:

Image 9

Now, drag “TimeInMinutes” element from dataset to data of second column. This column will give us sum of time spent on an activity by an agent.

Image 10

Step 7: In order to add a column at the end of the report, right-click and select following:

Image 11

Notice that there are 4 options of inserting a column. First 2 options are for adding column inside the group i.e., the ActivityName group. Last two options are for adding column outside the group. So we will select last option in our case. This will be a computed column. This needs to be the sum of time spent on various activities by each agent i.e., [Sum(TimeInMinutes)]. So, our report looks like this now:

Image 12

Final preview of report is as follows:Image 13

Target achieved!

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
Australia Australia
I started software development about 5 years ago. As part of my education I did Bachelor's in Computer applications and Masters in Computer applications. My skillset comprises of - ASP.net MVC, jQuery, AJAX, Lightswitch, SSIS, SSAS, SSRS.
These days I am working on migration to Dynamics CRM using KingswaySoft which is a SSIS Integration toolkit for Microsoft Dynamics CRM.

Comments and Discussions

 
QuestionPlace of blank can we show 0 Pin
Member 1328210124-Jul-18 3:25
Member 1328210124-Jul-18 3:25 
QuestionFor Multiplication Pin
Member 131722394-Aug-17 19:33
Member 131722394-Aug-17 19:33 
Questionplease help on this by providing query Pin
Member 1184894320-Jul-15 0:02
Member 1184894320-Jul-15 0:02 
QuestionThank you for your article Pin
phuythanh9-Jun-15 21:15
phuythanh9-Jun-15 21:15 
GeneralThanks it solved my problem too. Also if we add row at below it will give us total of column values. Pin
sachin shelake4-Jun-15 1:12
sachin shelake4-Jun-15 1:12 
Thanks it solved my problem too. Also if we add row at below it will give us total of column values.
GeneralThanks Pin
Juan Manuel Ramírez Francisco14-Apr-15 8:23
Juan Manuel Ramírez Francisco14-Apr-15 8:23 
QuestionGet values for Coaching value Pin
Member 1124638419-Nov-14 0:09
Member 1124638419-Nov-14 0:09 
QuestionDynamic Column Generation in RDLC Report Pin
Member 110582203-Sep-14 23:28
Member 110582203-Sep-14 23:28 
AnswerRe: Dynamic Column Generation in RDLC Report Pin
S.Kaur10-Nov-14 17:31
S.Kaur10-Nov-14 17:31 
QuestionThanx Pin
Member 1049237628-Dec-13 10:47
Member 1049237628-Dec-13 10:47 
AnswerRe: Thanx Pin
S.Kaur10-Nov-14 17:31
S.Kaur10-Nov-14 17:31 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.