I am using C# winforms to create an application that needs to turn a datatable into a pivot table. I have the pivot table working fine from a SQL end, but creating it from a datatable seems trickier. I couldn't seem to find anything built into .NET for this.
NOTE: I do have to do this from a .NET side as I manipulate the data prior to creating the pivot.
I've read through some articles that did some similar things as this, but I've had difficultly applying them to my problem.
*I have a datatable with the columns "StartDateTime", "Tap", and "Data". The startdates should be grouped together and data values averaged (sometimes more than one data value per startdate). The table is shown below:
Pivot table should output like the image below (not rounded values though). The column numbers are the distinct tap numbers (one for each unique one).
How can I go about creating this pivot table from the datatable?
EDIT: forgot to mention, these tap values are not always from 1-4, they do vary in number and value.
Learn the hash-pivot tesuji:
Pivot table like that can be easily calculated with free NReco.PivotData aggregation library:
Row and column keys are represented by pvtTbl.RowKeys and pvtTbl.ColumnKeys collections; values / totals could be accessed by indexer (for example:
pvtTbl[0,0].Value
) or by row+column key (for example:pivotData[new Key(new DateTime(2012, 3, 30, 11, 42, 00)), new Key(4)].Value
).Maybe this will help you. It is in vb.net.
Another small piece of code to pivot any table you would want: