将下表作为SQL结果:
我想使用上面生成的表格并生成一个表格,该表格将给定的信息添加到:
我有多个areaName和多个functionNames以及多个用户。如果可能,请告诉我以及如何做?
我已经尝试了几件事,但我现在刚刚筋疲力尽,需要一个方向。任何帮助表示赞赏。
即使您可以提供伪代码,我也可以尝试使用它。从作为给定表的SQL结果开始。
答案 0 :(得分:0)
使用correlated sub-queries
来获得所需的结果。我在下面提供了一个例子。测试第一个摘要列,然后添加其他摘要列(如果有)。希望这是有道理的,也有帮助。或者,您可以使用CTE (common table expression)来获得类似的结果。
SELECT a.areaName, a.functionName
, (SELECT count(DISTINCT b.UserKey)
from AREAS b
where a.areaName = b.areaName
and a.functionName = b.functionName
and b.[1-add] = 1) as UsersinAdd
-- Lather/rinse/repeat for other summary columns
FROM AREAS a
group by a.areaName, a.functionName
答案 1 :(得分:0)
您的问题源于表格的非规范化结构。列[1-add],...,[8-correction]
应该是列中的值,而不是列。正如您所发现的那样,这会导致更复杂的查询。
unpivot
命令可以纠正这个错误。
select areaname, functionname, rights, count(distinct userkey)
from
(
select * from yourtable
unpivot (permission for rights in ([1-add], [2-update/display],[4-update/display all] , [8-correction] )) u
) v
group by areaname, functionname, rights