基于两列分组,消除不在分组中的另一列上的数据集

时间:2017-01-02 06:23:41

标签: sql sql-server-2012

我在寻找的是 我有一张如表1所示的表。

COLUMN1 | COLUMN2 | Source
    --------------- ---------------
     1    |   X   |      a    
     1    |   X  |       b     
     1    |   X   |      c   
     2    |   Y   |      a     
     2    |   Y   |      b     
     3    |   Y   |      c     
     3    |   Y   |      b
     4    |   Y   |      c
     5    |   Z   |      b

结果应为

  COLUMN1 | COLUMN2  
    --------------- 
     3    |   Y 
     4    |   Y  
     5    |   Z 

我想要实现的是我试图根据Column1和Column2对结果集进行分组,如果任何一个集合包含值为“a”的列名称“Souce”,我不需要考虑那个数据集,比如说

1 X
2 Y

请就此提出建议。

2 个答案:

答案 0 :(得分:4)

您可以使用条件聚合:

SELECT column1,
  column2
FROM your_table t
GROUP BY column1,
  column2
HAVING COUNT(CASE WHEN source = 'a' THEN 1 END) = 0;

答案 1 :(得分:-1)

您可以使用以下查询获得所需的结果:

SELECT DISTINCT COLUMN1,COLUMN2 FROM TABLE1 来源<> '一个'