【问题标题】:Is it possible to generate columns based on a query in an SQL select statement?是否可以根据 SQL 选择语句中的查询生成列?
【发布时间】:2012-05-23 03:25:33
【问题描述】:

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

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

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 权限 WHEN 'AdministerErrors' THEN 'X' ELSE '' END ) 'Administer Errors'

每个权限。

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

【问题讨论】:

标签: sql sql-server-2008 select


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多