2

我正在尝试为我的应用程序生成一个安全矩阵作为报告。

看着这个问题,这几乎正是我想要的。

SQL Server:透视字符串数据的示例

我改变了解决方案

SELECT Action,
   MAX( CASE data WHEN 'View' THEN data ELSE '' END ) ViewCol, 
   MAX( CASE data WHEN 'Edit' THEN data ELSE '' END ) EditCol
FROM t
GROUP BY Action

适应我的解决方案。

SELECT RefRoleId ,
       MAX( CASE Permission WHEN 'AdministerErrors' THEN 'X' ELSE '' END ) 'Administer Errors'
 FROM RolePermission
 GROUP BY RefRoleId

我可以看到的问题是我需要确切地知道我拥有哪些权限并将它们作为列硬编码到查询中。我需要一个新的

MAX( CASE 权限 WHEN 'AdministerErrors' THEN 'X' ELSE '' END ) 'Administer Errors'

对于每一个权限。

有没有办法让我通过查询将我想要显示的列添加到 SQL 查询中?

4

1 回答 1

1

是的,您可以根据表中的数据动态构建您的数据透视表,自动添加所需数量的列。分步说明:http ://www.simple-talk.com/community/blogs/andras/archive/2007/09/14/37265.aspx

这篇文章没有提到 SQL Server 2008,但它也适用于该版本。

于 2012-05-23T03:57:50.557 回答