Refer the below code.
SQL
CREATE PROCEDURE GetCourseSales
AS
BEGIN
CREATE TABLE #CourseSales(Course VARCHAR(50),Year INT,Earning MONEY)
--Populate Sample records
INSERT INTO #CourseSales VALUES('.NET',2012,10000)
INSERT INTO #CourseSales VALUES('Java',2012,20000)
INSERT INTO #CourseSales VALUES('.NET',2012,5000)
INSERT INTO #CourseSales VALUES('.NET',2013,48000)
INSERT INTO #CourseSales VALUES('Java',2013,30000)
INSERT INTO #CourseSales VALUES('Sql Server',2013,15000)
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column
SELECT @ColumnName= ISNULL(@ColumnName + ',','')+ QUOTENAME(Course)
FROM (SELECT DISTINCT Course FROM #CourseSales) AS Courses
--Prepare the PIVOT query using the dynamic
SET @DynamicPivotQuery =
N'SELECT Year, ' + @ColumnName + '
FROM #CourseSales
PIVOT(SUM(Earning)
FOR Course IN (' + @ColumnName + ')) AS PVTTable'
--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery
DROP TABLE #CourseSales
END
HTML
<asp:Repeater ID="rptCustomers" runat="server">
<HeaderTemplate>
<table cellspacing="0" rules="all" border="1">
<tr>
<th scope="col" style="width: 80px">
Year
</th>
<th scope="col" style="width: 120px">
.NET
</th>
<th scope="col" style="width: 100px">
Java
</th>
<th scope="col" style="width: 100px">
Sql Server
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label ID="lblYear" runat="server" Text='<%# Eval("Year") %>' />
</td>
<td>
<asp:Label ID="lblNet" runat="server" Text='<%# Eval("DotNet") %>' />
</td>
<td>
<asp:Label ID="lblJava" runat="server" Text='<%# Eval("Java") %>' />
</td>
<td>
<asp:Label ID="lblSqlServer" runat="server" Text='<%# Eval("SqlServer") %>' />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
Code
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string query = "DECLARE @Temp AS TABLE (Year INT,DotNet VARCHAR(50),Java VARCHAR(50),SqlServer VARCHAR(50))\n";
query += " INSERT INTO @Temp\n";
query += " EXEC GetCourseSales\n";
query += " SELECT * FROM @Temp";
this.BindRepeater(query);
}
}
private void BindRepeater(string query)
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query, con))
{
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
cmd.CommandType = CommandType.Text;
DataTable dt = new DataTable();
sda.Fill(dt);
rptCustomers.DataSource = dt;
rptCustomers.DataBind();
}
}
}
}
Screenshot
