我需要在.net中创建一个数据透视表。不能使用任何第三方控制(除非它是免费的)。我试图找到解释如何创建数据透视表(算法或步骤)的文档,但几乎所有内容都与excel相关。 有谁知道如何在c#中创建数据透视表? 感谢
答案 0 :(得分:6)
在这里帮助 http://msdn.microsoft.com/en-us/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
答案 1 :(得分:2)
MS-Access具有TRANSFORM命令(执行转轴),因此您可以使用ADO.NET查询ms-access mdb文件,然后使用passthrough查询来获取无法转动的数据源(通常是MS-SQL / T-SQL)。我做了一个关于这个概念的证明并且它起作用并且比使用数组进行数据透视的VBScript实现短约5000个LOC。
关于MS-Access的通常贬低性评论不适用于此处,因为您实际上并未将数据存储在MS-Access中。
答案 2 :(得分:0)
CellSetGrid是一个开源ASP .Net(c#)控件,它提供了类似于数据透视表的功能。
以前可以在本网站下载: http://www.SQLServerAnalysisServices.com
现在该网站不再托管此控件。所以我上传了控件的来源 - CellSetGrid here。