有谁知道如何从数据库表创建矩阵显示?
我使用ASP.NET C#和数据库是SQL Server 2008.来自SQL Server 2008表的矩阵显示
表看起来像这样。
我想矩阵看起来像这样或类似的。
有谁知道如何从数据库表创建矩阵显示?
我使用ASP.NET C#和数据库是SQL Server 2008.来自SQL Server 2008表的矩阵显示
表看起来像这样。
我想矩阵看起来像这样或类似的。
这里我的建议是拉出来的数据恰好你有它的格式,为实体的名单(在其最简单的):
public class ServerApplicationRelationship
{
public string Server{get;set;}
public string Application{get;set;}
}
而自己创建一个自定义该控件使用List<ServerApplicationRelationship>
作为其数据源呈现HTML表格。
从提供的数据中呈现该表格应该非常容易。
如果你真的想拉出来的数据从SQL那个形状,你可以使用查询,如
select application,
case when exists(select 1 from example where application=ex.application and server='server 1') THEN 1 ELSE 0 end as [server 1],
case when exists(select 1 from example where application=ex.application and server='server 2') THEN 1 ELSE 0 end as [server 2],
case when exists(select 1 from example where application=ex.application and server='server 3') THEN 1 ELSE 0 end as [server 3]
from yourTable ex
group by application
使用TSQL枢
create table table1
(
serverName varchar(30),
app varchar(50)
);
go
insert table1 (serverName , app) values ('server1' , 'app A');
insert table1 (serverName , app) values ('server2' , 'app A');
insert table1 (serverName , app) values ('server2' , 'app B');
insert table1 (serverName , app) values ('server3' , 'app B');
insert table1 (serverName , app) values ('server1' , 'app C');
insert table1 (serverName , app) values ('server3' , 'app C');
go
create procedure GetPivotTable
as begin
DECLARE @PivotColumnHeaders VARCHAR(MAX)
SELECT @PivotColumnHeaders =
COALESCE(@PivotColumnHeaders + ',[' + cast(t.serverName as varchar) + ']' ,
'[' + cast(t.serverName as varchar)+ ']')
FROM (select distinct serverName from table1) t
DECLARE @PivotTableSQL NVARCHAR(MAX)
SET @PivotTableSQL = N'
select * from
(select app, serverName from table1) sourceTable
pivot
(
count(serverName) for serverName in (' + @PivotColumnHeaders + ')
) pivottable
'
EXECUTE(@PivotTableSQL)
end
go
exec GetPivotTable
编辑处理任何数量的服务器和应用程序。您可以将它放入存储过程,以便于在asp.net代码中与您的asp.net代码 –
进行整合,您可以使用ado.net调用存储过程GetPivotTable来获取数据透视表。 –
感谢您的回复。两者看起来很有趣因为我之前没有使用它们,所以我必须稍微查看数据透视表。 – RickBowden
类似问题透视表: http://stackoverflow.com/questions/1069677/pivot-table-in-c –