是否可以基于SQL select语句中的查询生成列?

时间:2012-05-23 03:25:34

标签: sql sql-server-2008 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权限,'管理错误'那么'X'ELSE''结束)'管理错误'

获得每一项许可。

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

1 个答案:

答案 0 :(得分:1)

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

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