【发布时间】:2019-08-22 13:05:17
【问题描述】:
我从一些表中创建了一个视图,其中包含有关某些用户的授权信息的数据。一个例子:
Role Page Right
Admin Home RW
Manager Home RW
Viewer Home R
Admin Overview RW
Manager Overview R
Viewer Overview R
Admin Settings RW
我的目标是创建一个像矩阵一样的新视图,显示如下:
Page Admin Manager Viewer
Home RW RW R
Overview RW R R
Settings RW
有没有一种方法可以在 SSMS 中完成此任务,请记住将来可能会添加更多角色,而且我不必在每次创建角色时都更新我的代码?
提前致谢!
【问题讨论】:
-
解决方案是使用动态pivot,但不能在视图中使用动态SQL。我认为您可以使用一些复杂的 XML 函数来做到这一点,也许有人可以解决这个问题。
-
您肯定无法在视图中执行此操作,因为这需要动态 sql。您的要求中的某些内容必须在此处更改,因为您不能在视图中使用动态 sql。也许您可以使用存储过程?
-
Sean 是对的,Views 只是一个预编译的
SELECT语句;他们不能有DECLARE或EXEC之类的东西,甚至不能有多个单个SELECTs。一个函数也不可用,因为你也不能在其中使用EXEC;这使您只剩下一种类型的对象;一个 SP。 -
那么如果我选择放弃需求的动态部分,有可能吗?
-
动态元素将在无需干预的情况下扮演您的新角色
标签: sql-server pivot