我正在尝试为我的应用程序生成一个安全矩阵作为报告。
看看这个问题,这几乎就是我想要的。
SQL Server: Examples of PIVOTing String data
我已经改变了解决方案
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权限,'管理错误'那么'X'ELSE''结束)'管理错误'
获得每一项许可。
我有办法通过查询将我想要显示的列添加到SQL查询中吗?
答案 0 :(得分:1)
是的,您可以动态构建您的数据透视表,根据表中的数据自动添加所需数量的列。分步说明:http://www.simple-talk.com/community/blogs/andras/archive/2007/09/14/37265.aspx
文章没有提到SQL Server 2008,但它也适用于该版本。