首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c#中的数据透视表

c#中的数据透视表
EN

Stack Overflow用户
提问于 2009-07-01 15:07:53
回答 3查看 12K关注 0票数 11

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

EN

回答 3

Stack Overflow用户

发布于 2010-12-01 17:06:11

在这里帮助http://msdn.microsoft.com/en-us/library/aa172756%28SQL.80%29.aspx

实际表:

代码语言:javascript
运行
复制
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表示季度)

代码语言:javascript
运行
复制
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  

查询:

代码语言:javascript
运行
复制
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

另一个输出:

代码语言:javascript
运行
复制
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
票数 6
EN

Stack Overflow用户

发布于 2009-07-01 15:36:14

MS-Access具有TRANSFORM命令(执行透视),因此您可以使用ADO.NET查询ms-access mdb文件,然后使用直通查询获得无法透视的数据源(通常是MS-SQL/T-SQL)。我做了一个概念上的证明,它起作用了,比使用数组来做轴心的VBScript实现缩短了大约5000LOC。

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

票数 2
EN

Stack Overflow用户

发布于 2011-02-23 19:55:09

CellSetGrid是一个开源的ASP .Net (c#)控件,它提供了类似于透视表的功能。

以前可以在这个网站上下载:http://www.SQLServerAnalysisServices.com

现在,该网站不再承载此控件。所以我已经上传了控件的源代码-- CellSetGrid here

  1. 您可以生成源
  2. 将其作为控件添加到Visual Studio工具箱中。
  3. 将控件拖放到web窗体
  4. 将连接字符串设置为多维数据集
  5. 这将显示所有维度和度量值组,以便您可以拖放所需内容以获得类似于functionality

的数据透视表

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1069677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档