Tsql T-SQL选择具有值A和B的所有ID

Tsql T-SQL选择具有值A和B的所有ID,tsql,sql-server-2012-express,Tsql,Sql Server 2012 Express,我试图在TableA中查找TableB中的一组记录所提到的所有ID,如果在表C中定义了该集合,则查找该集合。到目前为止,一组内部联接为我提供了以下结果: TableA.ID | TableB.Code ----------------------- 1 | A 1 | B 2 | A 3 | B 我只想选择ID,在本例中,A和B都有一个条目,但A和B的值基于另一个查询。 我认为这应该可以通过TableA.ID创建一个GROUP,并

我试图在TableA中查找TableB中的一组记录所提到的所有ID,如果在表C中定义了该集合,则查找该集合。到目前为止,一组内部联接为我提供了以下结果:

TableA.ID | TableB.Code
-----------------------
1         | A
1         | B
2         | A
3         | B
我只想选择ID,在本例中,A和B都有一个条目,但A和B的值基于另一个查询。 我认为这应该可以通过TableA.ID创建一个GROUP,并具有=ALL(表C上的子查询)。
但这不会返回任何值。

因为您没有发布原始查询,所以我假设它在CTE中。假设是这样,您需要的查询大致如下:

SELECT ID
FROM cte
WHERE Code IN ('A', 'B')
GROUP BY ID
HAVING COUNT(DISTINCT Code) = 2;

这是一个非常糟糕的问题,但您可能需要将不同的计数与表C进行比较

SELECT a.ID
FROM TableA a
GROUP BY a.ID
HAVING COUNT(DISTINCT a.Code) = (SELECT COUNT(*) FROM TableC)

不过我们在猜测

请给我们示例数据和模式:您提到了3个表,但只给了我们一个,似乎是一个表中的2个表。另外,您实际尝试了什么?原始代码非常复杂,所以我想让我们回到核心问题。但你是对的,这是使用CTE和利用一组有计数似乎使我更接近。谢谢你的回答。