2009-07-01 113 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. 什麼