创建用户权限的报告

时间:2012-07-27 20:26:30

标签: sql sql-server-2008

我有一张表,用于存储用户的权限,以授予或拒绝访问软件的不同模块。

idUser     idModule
  1           1
  1           2
  1           3
  2           4

用户“1”可以访问模块1,2,3但不能访问4。 用户“2”只能访问4。

因此,idModule是来自Module表的FK,如果用户有权访问,它将在该表中有一行,否则将被拒绝。

idModule           Module
   1          Can Create Users
   2          Can Edit Users
   3          Can Delete Users
   4          Can View Users

我想要一个输出的查询:

idUser  Module1    Module2    Module3    Module4
  1        1          1          1          0
  2        0          0          0          1

这种方式很容易做报告。

感谢阅读。

1 个答案:

答案 0 :(得分:0)

也许是一个简单的反规范化查询:

select idUser
     , max(case when idModule=1 then 1 else 0 end) as Module1
     , max(case when idModule=2 then 1 else 0 end) as Module2
     , max(case when idModule=3 then 1 else 0 end) as Module3
     , max(case when idModule=4 then 1 else 0 end) as Module4
from   your_table
group by 1