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