我需要在.Net中创建一个透视表。不能使用任何第三方控件(除非是免费的)。我试图寻找一般情况下如何创建透视表的文档(算法或步骤),但几乎所有的内容都与Excel有关。是否有人知道如何在C#中创建透视表?谢谢。
我需要在.Net中创建一个透视表。不能使用任何第三方控件(除非是免费的)。我试图寻找一般情况下如何创建透视表的文档(算法或步骤),但几乎所有的内容都与Excel有关。是否有人知道如何在C#中创建透视表?谢谢。
在这里提供帮助:http://msdn.microsoft.com/zh-cn/library/aa172756%28SQL.80%29.aspx
实际表格:
Year Quarter Amount
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 4 2.4
期望的输出结果:(Q代表季度)
Year Q-1 Q-2 Q-3 Q-4
1990 1.1 1.2 1.3 1.4
1991 2.1 2.2 2.3 2.4
1992 0.0 0.0 0.0 2.4
查询:
Use Northwind
GO
CREATE TABLE Pivot
( Year SMALLINT,
Quarter TINYINT,
Amount DECIMAL(2,1) )
GO
INSERT INTO Pivot VALUES (1990, 1, 1.1)
INSERT INTO Pivot VALUES (1990, 2, 1.2)
INSERT INTO Pivot VALUES (1990, 3, 1.3)
INSERT INTO Pivot VALUES (1990, 4, 1.4)
INSERT INTO Pivot VALUES (1991, 1, 2.1)
INSERT INTO Pivot VALUES (1991, 2, 2.2)
INSERT INTO Pivot VALUES (1991, 3, 2.3)
INSERT INTO Pivot VALUES (1991, 4, 2.4)
INSERT INTO Pivot VALUES (1992, 4, 2.4)
GO
SELECT * FROM Pivot
GO
SELECT Year,
SUM(CASE Quarter WHEN 1 THEN Amount ELSE 0 END) AS Q1,
SUM(CASE Quarter WHEN 2 THEN Amount ELSE 0 END) AS Q2,
SUM(CASE Quarter WHEN 3 THEN Amount ELSE 0 END) AS Q3,
SUM(CASE Quarter WHEN 4 THEN Amount ELSE 0 END) AS Q4
FROM Northwind.dbo.Pivot
GROUP BY Year
GO
另一个输出:
SELECT P1.*, (P1.Q1 + P1.Q2 + P1.Q3 + P1.Q4) AS YearTotal
FROM (SELECT Year,
SUM(CASE P.Quarter WHEN 1 THEN P.Amount ELSE 0 END) AS Q1,
SUM(CASE P.Quarter WHEN 2 THEN P.Amount ELSE 0 END) AS Q2,
SUM(CASE P.Quarter WHEN 3 THEN P.Amount ELSE 0 END) AS Q3,
SUM(CASE P.Quarter WHEN 4 THEN P.Amount ELSE 0 END) AS Q4
FROM Pivot AS P
GROUP BY P.Year) AS P1
GO
CellSetGrid是一种开源的ASP .Net (c#)控件,提供类似于数据透视表的功能。
这个控件曾经在这个网站上提供下载: http://www.SQLServerAnalysisServices.com
现在该网站不再提供此控件。因此,我已经在这里上传了该控件的源代码。