2017-07-15 47 views
0

是否存在使用SQL Server 2016仅显示没有重复记录的SQL查询?

Query results for all records

如何查询,以便有没有硬编码没有重复的搜索结果只显示记录?看效果

Query Results using hardcode

+0

请分享你的表的细节和疑问:

select empcode, leavecode from (select t.*, count(*) over (partition by empcode) as cnt from t ) t where cnt = 1; 

或者,如果当有重复的,也许是最有效的方式leavecode s为唯一您正在使用。 – ArunGeorge

+0

在你的例子中根本没有重复的记录 –

回答

2

你只选择那些在empcodes的表只能有一个发生有empcode记录。

SELECT 
    empcode, 
    leavecode 
FROM mytable 
WHERE empcode in (
    SELECT empcode FROM mytable GROUP BY empcode HAVING count(1)=1 
) 
+0

非常感谢。它帮助我很多。 –

3

如果你想empcode s的没有重复,那么一个简单的方法使用聚合:

select empcode, min(leavecode) as leavecode 
from t 
group by empcode 
having count(*) = 1; 

这工作,因为如果只有一行的empcode,然后min(leavecode)leavecode

另一种方法是使用窗口功能:

select t.* 
from t 
where not exists (select 1 
        from t t2 
        where t2.emp_code = t.empcode and t2.leavecode <> t.leavecode 
       ); 
+0

非常感谢。它有很多帮助。 –