2012-05-23 20 views
2

我试图为我的应用程序生成一个安全矩阵作为报告。是否可以根据SQL select语句中的查询生成列?

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

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权限如果 'AdministerErrors' 然后 'X' ELSE '' END) '辖错误'

为每一个许可。

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

+0

可能重复的[SQL Server动态PIVOT查询?](http://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query) –

回答