2014-04-03 36 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