This is how this can be done. In the RDLC file locate /Report/Body/ReportItems/Table node and do the following inside it:
define the header of a new column - add a new TableCell inside Header node
bind the column with data (from DataTable) - add a new TableCell inside Details node
define the width of the colum - add a new TableColumn inside TableColumns
Apart from that you need to modify the definition of the DataSet that will ship the data. It is defined as a Field node within /Report/DataSets.
The easiest way to add new nodes is to get its parent, copy its last child and update the copy with appropriate values, and add it as the new last child. This way you will probably have to update only a couple of strings instead of creating the new node which has another nodes as children etc.
Then you need to create a DataTable object, populate it with data and bind it with the ReportViewer as its data source.
Now Bind the DataFrom DataTable as Below
ReportDataSource rds = new ReportDataSource(DS_NAME, DATA_TABLE);
ReportViewer1.LocalReport.ReportPath = string.Empty;
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);
byte[] rdlBytes = Encoding.UTF8.GetBytes(XML_DOC.OuterXml);
MemoryStream stream = new MemoryStream(rdlBytes);
ReportViewer1.LocalReport.LoadReportDefinition(stream);