我正在使用现有数据库并尝试编写SQL查询以获取所有帐户信息,包括权限级别.这是用于安全审计.我们希望以可读的方式转储所有这些信息,以便于比较.我的问题是有一个权限的桥/链接表,所以每个用户有多个记录.我希望在一行中获得一个用户的所有权限.这是一个例子:
Table_User: UserId UserName 1 John 2 Joe 3 James Table_UserPermissions: UserId PermissionId Rights 1 10 1 1 11 2 1 12 3 2 11 2 2 12 3 3 10 2
PermissionID链接到一个具有Permission名称及其功能的表.对象就像1 =视图,2 =修改等.
我从用户1的基本查询中得到的是:
UserId UserName PermissionId Rights 1 John 10 1 1 John 11 2 1 John 12 3
我想要的是这样的:
UserId UserName Permission1 Rights1 Permission2 Right2 Permission3 Right3 1 John 10 1 11 2 12 3
理想情况下,我希望所有用户都这样.我发现最接近的是SQL Server 2005中的Pivot函数.http: //geekswithblogs.net/lorint/archive/2006/08/04/87166.aspx 从我能说的这个问题是我需要的为每个用户命名每列,我不知道如何获得权限级别.使用真实数据,我有大约130个用户和40个不同的权限.
有没有另外一种方法只有sql,我可以做到这一点?