2014-04-03 35 views
1

我有以下表SQL找到糟糕的組合

item_id  dep_id   value_id 
67   20    3 
67   20    2 
68   20    8 
68   20    8 
68   20    8 
97   16    3 

我需要確保該表對每個部門標識每個項目相同value_id。換句話說,對於給定的department_id,我不得有一個item_id與不同的value_id。

在上述例子中的前兩行是無效的,因爲項目67,在部門標識20顯示帶有不同value_ids(3,2)

是否有爲了趕上「異常」,以執行一個查詢?我正在使用SQL Server 2005

在此先感謝!

+1

你如何決定哪一個是正確的value_id? –

+0

@ M.Ali - 是的,實際上他只想得到異常。可能是其他人處理重複的解決方案。 –

回答

4

這將列出你有(item_id,dep_id)對有不同的valud_is的對。

select 
    item_id, 
    dep_id 
from 
    table 
group by 
    item_id, 
    dep_id 
having 
    count(distinct value_id)>1 
+0

thanx很多Lajos! – PanosPlat

2

DISTINCT通常比較昂貴,這可能會使用更少的資源(和另外顯示兩個不同的值):

select 
    item_id, 
    dep_id, 
    min(value_id), 
    max(value_id) 
from 
    table 
group by 
    item_id, 
    dep_id 
having 
    min(value_id) <> max(value_id) 
+0

非常感謝 – PanosPlat