2009-07-01 118 views
11

我需要在.net中创建一个数据透视表。不能使用任何第三方控件(除非它是免费的)。我试图找到解释如何创建数据透视表(算法或步骤)的文档,但几乎所有内容都与excel相关。有没有人知道如何在C#中创建数据透视表? 谢谢c中的枢轴表#

+0

你想创建一个Excel数据透视表,或者你是否试图在GridView中显示某种类型的透视数据? – Jimmy 2009-07-01 15:12:19

+0

我试图在GridView中显示数据。 – Sheraz 2009-07-01 15:13:48

回答

2

MS-Access有TRANSFORM命令(这是一个数据透视表),因此您可以使用ADO.NET查询ms-access mdb文件,然后使用passthrough查询来获取数据源, t pivot(通常是MS-SQL/T-SQL)。我做了一个这个概念的证明,它的工作原理和大约比使用数组进行数据透视的VBScript实现短了大约5000个LOC。

关于MS-Access通常的贬义评论在这里不适用,因为你实际上并没有将数据存储在MS-Access中。

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 
0

CellSetGrid是一个开源ASP净(C#)控制,它提供了透视表相同的功能。

这曾经是可供下载在这个网站: http://www.SQLServerAnalysisServices.com

现在该网站已经不主持这控制。所以我上传了控制源 - CellSetGrid here

  1. 您可以构建源
  2. 添加为在Visual Studio工具箱中的控件。
  3. 拖放控制,以网络的形式
  4. 设置连接字符串立方体
  5. 这将显示所有的尺寸和度量值组,所以你可以拖动ñ下降,你想获得的数据透视表一样的功能
  6. 什么