2013-06-05 63 views
0

我有一堆不同的充表的接合在一起来创建以下表的数据库:如何查找具有相同两列的行,但一列不同?

Col1 Col2 Col3   Col4 
51  1  1101 2009-01-24 00:00:00.000 
52  1  1101 2009-05-14 00:00:00.000 
76  1  1101 2009-02-04 00:00:00.000 
78  2  1101 2009-09-29 00:00:00.000 
79  1  1101 2009-09-25 00:00:00.000 
79  2  1101 2009-09-25 00:00:00.000 
80  1  1101 2009-02-09 00:00:00.000 
80  1  1101 2012-09-26 00:00:00.000 
80  2  1101 2009-02-09 00:00:00.000 
80  2  1101 2012-09-26 00:00:00.000 

我基本上想只有像79行或80,其中至少有两排在Col1和Col3中相同,但Col2不同。

我是SQL新手,所以我不知道这是否简单,我希望有人可以提供帮助。

由于

我希望仅显示具有在列1和3相同的值,但在第2栏不同的行,所以对于上述实例仅用于79和80

显示的行
+2

请用可读的方式格式化表格。 –

+0

你能展示一个理想的结果吗?我无法从你的描述中读出你期望的结果,所有行或每个组的行或...? –

+0

对不起,我不知道最初看起来有多可怕。现在修好了 – Sam

回答

1

使用的group byhavingcount distinct组合应该回到你想要什么

select col1, col3, count (distinct col2) 
from yourtable 
group by col1, col3 
having count(distinct col2) >= 2 

如果你想显示完整的数据集,加入这一结果集原始数据源。

select t.* from yourtable t 
    inner join 
(
    select col1, col3 
    from yourtable 
    group by col1, col3 
    having count(distinct col2) >= 2 
) v 
    on t.col1 = v.col1 
    and t.col3 = v.col3 
1

最简单的可能,因为你似乎只想要不同的Col1值匹配显示的标准应该是;

SELECT DISTINCT Col1 
FROM Table1 
GROUP BY Col1,Col3 
HAVING COUNT(DISTINCT Col2) > 1 

An SQLfiddle to test with

相关问题