【发布时间】:2018-11-27 16:24:35
【问题描述】:
给定下表T:
------------------------------
| Person | PermissionTypeId |
------------------------------
| Jon | 1 |
------------------------------
| Jon | 2 |
------------------------------
| Adam | 1 |
------------------------------
还有表P:
------------------------------
| Id | PermDescription |
------------------------------
| 1 | Can Access Reports |
------------------------------
| 2 | Can Access Locker |
------------------------------
假设我想编写一个返回一行 Jons 权限的查询,如下所示:
------------------------------------------------------
| Person | Can Access Reports | Can Access Locker |
------------------------------------------------------
| Jon | true | true |
------------------------------------------------------
如果存在与用户关联的 PermissionTypeId,则存在 true。 false 存在于不存在的地方。因此 Adams 查询将返回:
-----------------------------------------------------
| Person | Can Access Reports | Can Access Locker |
----------------------------------------------------
| Adam | true | false |
-----------------------------------------------------
如何编写返回该行的以下查询?
【问题讨论】:
-
如果列数不同,则需要进行动态透视。
-
如果在没有权限的情况下拥有恒定数量的“false”列更容易,我可以编辑我的答案来要求它,因为它仍然返回我想要的内容跨度>
-
是的,如果您有一致数量的“true”或“false”列,那么它是一个没有聚合的简单枢轴,而不是动态枢轴。这更容易一些。
-
好的,我编辑了它以返回一组数字
标签: sql sql-server tsql join pivot