SQL Pivot 允许我查看哪些用户可以访问某些屏幕

Posted

技术标签:

【中文标题】SQL Pivot 允许我查看哪些用户可以访问某些屏幕【英文标题】:SQL Pivot that allows me to see which users have access to certain screens 【发布时间】:2018-02-26 20:19:01 【问题描述】:

我有以下表格(在 SQL Server 中):

屏幕访问

+----+------+--------------+
| id | user | screen       |
+----+------+--------------+
| 1  | John | Screen 1     |
| 2  | Bob  | Screen 1     |
| 2  | Bob  | Screen 3     |
| 2  | Bob  | Screen 4     |
+----+------+--------------+

如何创建一个透视表/一个列表,显示 john 可以访问哪些屏幕,而 bob 不能访问?

任何帮助将不胜感激。

编辑:只有两个用户正确,但屏幕很多,我只是以有限的屏幕为例。

期望的输出

Users   |John|Bob
Screen1 |x   |x
Screen3 |    |x
Screen4 |    |x

谢谢。

【问题讨论】:

你只有两个用户? John 无权访问 Bob 没有的任何屏幕。是什么让你认为你需要一个支点?你想要的输出是什么样的? 用所需的输出更新了我的问题 这是今天的第三个 PIVOT 问题。研究怎么了?顺便说一句 - 不是我的反对意见,但请研究一下。 【参考方案1】:

Pivot 似乎有点矫枉过正,但有可能:

SELECT *
  FROM ScreenAccess
       PIVOT (Count(ID)
             FOR [User] IN (Bob,
                            John)) piv 

【讨论】:

以上是关于SQL Pivot 允许我查看哪些用户可以访问某些屏幕的主要内容,如果未能解决你的问题,请参考以下文章

shiro之授权

Spring security如何允许匿名访问大多数限制某些操作的站点

第三章:shiro授权认证

仅允许某些用户访问某些文件夹/文件

自定义查看 Google Script Application 的权限

Shiro学习授权