Подтвердить что ты не робот

Сводная таблица в С#

Мне нужно создать сводную таблицу в .net. Нельзя использовать сторонний элемент управления (если он не свободен). Я попытался найти документацию, в которой объясняется, как создать сводную таблицу (алгоритм или шаги) в целом, но почти все связано с excel.  Кто-нибудь знает, как создать сводную таблицу в С#??? Благодаря

4b9b3361

Ответ 1

Помощь здесь 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  

Query:

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

Ответ 2

MS-Access имеет команду TRANSFORM (которая делает точку опоры), поэтому вы можете использовать ADO.NET для запроса файла MSD-доступа mdb, а затем использовать прокси-запросы там, чтобы добраться до источника данных, который не может поворачиваться ( обычно MS-SQL/T-SQL). Я сделал доказательство концепции этого, и он работал, и был около 5000 LOC короче, чем реализация VBScript, которая использовала опорную точку с использованием массивов.

Обычные пренебрежительные замечания о MS-Access здесь не применяются, потому что вы фактически не храните данные в MS-Access.

Ответ 3

CellSetGrid - это элемент управления ASP.Net(С#) с открытым исходным кодом, который предлагает такую ​​сводную таблицу, как функциональность.

Это было доступно для скачивания на этом сайте: http://www.SQLServerAnalysisServices.com

Теперь сайт больше не размещает этот элемент управления. Поэтому я загрузил источник управления - CellSetGrid здесь.

  • Вы можете создать источник
  • Добавьте это как элемент управления в Visual Studio.
  • Управление перетаскиванием в веб-форму
  • Установить строку подключения в куб
  • Это покажет все размеры и группы измерений, чтобы вы могли перетащить n, чтобы вы могли получить сводную таблицу, такую ​​как функциональность.