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

时间:2018-02-16 07:31:52

标签: tsql sql-server-2012-express

我正在尝试查找TableA中由TableB中的一组记录提及的所有ID,如果在表C中定义,则设置。我到目前为止,一组INNER JOIN为我提供了结果如下:

TableA.ID | TableB.Code
-----------------------
1         | A
1         | B
2         | A
3         | B

我想只选择ID,在这种情况下,A和B都有一个条目,但值A和B基于另一个Query。 我认为这应该可以使用GROUP BY TableA.ID和HAVING = ALL(表C上的子查询)。 但那没有回报任何价值。

2 个答案:

答案 0 :(得分:0)

由于您没有发布原始查询,我将假设它在CTE中。假设这样,你想要的查询是这样的:

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

答案 1 :(得分:0)

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

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

我们猜不过。