样本数据组:如何找到行,其中每一组中的所有行都有一个特定的列值
ID1 ID2 Num Type
---------------------
1 1 1 'A'
1 1 2 'A'
1 2 3 'A'
1 2 4 'A'
2 1 1 'A'
2 2 1 'B'
3 1 1 'A'
3 2 1 'A'
期望的结果:
ID1 ID2
---------
1 1
1 2
3 1
3 2
注意到,我的ID1和分组ID2,但不是Num,而我正在专门寻找Type ='A'的组。通过在同一个表上连接两个查询,我知道它是可行的:一个查询找到具有不同Type的所有组,另一个查询用Type ='A'过滤行。但我想知道这是否能以更有效的方式完成。
我使用的是SQL Server 2008中,和我目前的查询是:
SELECT ID1, ID2
FROM (
SELECT ID1, ID2
FROM T
GROUP BY ID1, ID2
HAVING COUNT(DISTINCT Type) = 1
) AS SingleType
INNER JOIN (
SELECT ID1, ID2
FROM T
WHERE Type = 'A'
GROUP BY ID1, ID2
) AS TypeA ON
TypeA.ID1 = SingleType.ID1 AND
TypeA.ID2 = SingleType.ID2
编辑:更新了样本数据和查询,以表明我对分组两列,不只是一个。
什么是你当前的查询看起来像工作? – 2012-02-03 16:49:25