[英]Matrix display from a SQL Server 2008 table
有谁知道如何从数据库表创建矩阵显示?
我正在使用ASP.NET C#,数据库是SQL Server 2008。
该表如下所示。
我希望矩阵看起来像这样或类似。
使用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
我的建议是将数据完全按照您拥有的格式提取到实体列表中(最简单的方法):
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.