职责分离搜索
Segregation of Duties search
我正在尝试编写一个 SQL 语句来搜索 table 问题的职责分离。在我的 table 中有一个用户栏和一个责任栏。我想拉所有有两个明确职责的用户。这是我正在尝试的方法,但它不起作用:
SELECT Users.[User], Users.[Responsibility]
FROM Users
WHERE Users.[Responsibility]="Example A"
And Users.[Responsibility]="Example B";
有什么建议吗?我认为它不起作用,因为它没有将责任建立在用户身上,但我不确定如何解决这个问题。
以下查询将return所有用户的列表'Example A'
和'Example B'
作为他们的Responsibility
:
SELECT Users.[User]
FROM Users
GROUP BY [User]
HAVING COUNT(CASE WHEN [Responsibility]='Example A' THEN 1 END) >= 1 AND
COUNT(CASE WHEN [Responsibility]='Example B' THEN 1 END) >= 1
如果您想让所有用户至少承担两种不同的责任(无论是哪种),请将 HAVING
子句替换为:
HAVING COUNT(DISTINCT [Responsibility]) >= 2
编辑:
对 MS-Access 使用以下查询:
SELECT User
FROM Users
GROUP BY User
HAVING SUM(IIF(Responsibility = "Example A", 1, 0)) >=1
AND SUM(IIF(Responsibility = "Example B", 1, 0)) >= 1
查询其实很简单:
select u.User
from Users u
where u.Responsibility in( 'Example A', 'Example B' )
group by u.User
having count(*) > 1;
您的尝试没有成功,因为没有一行同时具有 'Example A' 和 'Example B' 的用户。所以你必须检查 'Example A' 或 'Example B' 然后计算结果。
当然,这假定不会为同一用户多次列出相同的责任。
我正在尝试编写一个 SQL 语句来搜索 table 问题的职责分离。在我的 table 中有一个用户栏和一个责任栏。我想拉所有有两个明确职责的用户。这是我正在尝试的方法,但它不起作用:
SELECT Users.[User], Users.[Responsibility]
FROM Users
WHERE Users.[Responsibility]="Example A"
And Users.[Responsibility]="Example B";
有什么建议吗?我认为它不起作用,因为它没有将责任建立在用户身上,但我不确定如何解决这个问题。
以下查询将return所有用户的列表'Example A'
和'Example B'
作为他们的Responsibility
:
SELECT Users.[User]
FROM Users
GROUP BY [User]
HAVING COUNT(CASE WHEN [Responsibility]='Example A' THEN 1 END) >= 1 AND
COUNT(CASE WHEN [Responsibility]='Example B' THEN 1 END) >= 1
如果您想让所有用户至少承担两种不同的责任(无论是哪种),请将 HAVING
子句替换为:
HAVING COUNT(DISTINCT [Responsibility]) >= 2
编辑:
对 MS-Access 使用以下查询:
SELECT User
FROM Users
GROUP BY User
HAVING SUM(IIF(Responsibility = "Example A", 1, 0)) >=1
AND SUM(IIF(Responsibility = "Example B", 1, 0)) >= 1
查询其实很简单:
select u.User
from Users u
where u.Responsibility in( 'Example A', 'Example B' )
group by u.User
having count(*) > 1;
您的尝试没有成功,因为没有一行同时具有 'Example A' 和 'Example B' 的用户。所以你必须检查 'Example A' 或 'Example B' 然后计算结果。
当然,这假定不会为同一用户多次列出相同的责任。