2013-06-05 64 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

相關問題