T-SQL select 所有具有值 A 和 B 的 ID
T-SQL select all IDs that have value A and B
我正在尝试查找 TableA 中的所有 ID,这些 ID 由 TableB 中的一组记录提及,并且如果在 TableC 中定义该集合。我'到目前为止,一组 INNER JOIN 为我提供了以下结果:
TableA.ID | TableB.Code
-----------------------
1 | A
1 | B
2 | A
3 | B
我只想 select ID,在这种情况下,A 和 B 都有一个条目,但 A 和 B 的值基于另一个查询。
我认为这应该可以通过 GROUP BY TableA.ID 和 HAVING = ALL(table C 上的子查询) 实现。
但这没有返回任何值。
由于您没有 post 原始查询,我假设它在 CTE 中。假设这样,您想要的查询是这样的:
SELECT ID
FROM cte
WHERE Code IN ('A', 'B')
GROUP BY ID
HAVING COUNT(DISTINCT Code) = 2;
这是一个非常糟糕的问题,但您可能需要将不同的计数与 table C
进行比较
SELECT a.ID
FROM TableA a
GROUP BY a.ID
HAVING COUNT(DISTINCT a.Code) = (SELECT COUNT(*) FROM TableC)
我们只是在猜测。
我正在尝试查找 TableA 中的所有 ID,这些 ID 由 TableB 中的一组记录提及,并且如果在 TableC 中定义该集合。我'到目前为止,一组 INNER JOIN 为我提供了以下结果:
TableA.ID | TableB.Code
-----------------------
1 | A
1 | B
2 | A
3 | B
我只想 select ID,在这种情况下,A 和 B 都有一个条目,但 A 和 B 的值基于另一个查询。 我认为这应该可以通过 GROUP BY TableA.ID 和 HAVING = ALL(table C 上的子查询) 实现。 但这没有返回任何值。
由于您没有 post 原始查询,我假设它在 CTE 中。假设这样,您想要的查询是这样的:
SELECT ID
FROM cte
WHERE Code IN ('A', 'B')
GROUP BY ID
HAVING COUNT(DISTINCT Code) = 2;
这是一个非常糟糕的问题,但您可能需要将不同的计数与 table C
进行比较SELECT a.ID
FROM TableA a
GROUP BY a.ID
HAVING COUNT(DISTINCT a.Code) = (SELECT COUNT(*) FROM TableC)
我们只是在猜测。