在多行中查找一列中具有相同值的行,而另一列具有不同的值

Fyl*_*lix 0 sql sql-server group-by

对不起,我无法在SQLFiddle上证明这一点,因为当我问这个问题时它似乎已经失效了.

我有下表

Col1        Col2     
====        ====     
1           A       
1           A       
1           B    
2           C
2           C
Run Code Online (Sandbox Code Playgroud)

如果我通过查询运行组

SELECT COL1,COL2
GROUPBY COL1,COL2
Run Code Online (Sandbox Code Playgroud)

我会的

Col1        Col2     
====        ====     
1           A            
1           B    
2           C
Run Code Online (Sandbox Code Playgroud)

我的问题是,当第2列中有多个不同的值时,如何编写查询来检测第1列值?本质上,该查询的返回应该给出"1",因为这是行在Col1中具有相同值的位置,而Col2在多个数据行的跨度上具有不同的值.

Yog*_*rma 6

您可以使用group by子句min()max():

select col1
from table t
group by col1
having min(col2) <> max(col2);
Run Code Online (Sandbox Code Playgroud)


Geo*_*tis 5

尝试这个:

select Col1,count(distinct Col2) as [different Col2 value count]
from yourtable
GROUP BY COL1
having count(distinct Col2)>1
Run Code Online (Sandbox Code Playgroud)