SQL Server:如何在我的唯一键中找到访问重叠?

时间:2015-10-21 15:07:34

标签: sql sql-server

我有一个系统,它根据唯一键和主键在表中创建记录。每次访问都分配给客户的唯一密钥,并且应该为每次访问创建主键。但是,在某些情况下,系统会为同一次访问创建多个主键。我将如何找到发生这种情况的客户?

以下是应重新创建问题的数据示例。

RecordNum   ClientNum   VisitDate
---------------------------------
12345       B1000       8/15/2015
12345       B1001       8/20/2015
12345       B1002       8/20/2015
13456       C1000       9/23/2014
13456       C1001       9/24/2015
13456       C1002       10/2/2015
13456       C1003       10/2/2015
13456       C1004       10/2/2015
15165       D1000       11/1/2015
15165       D1001       11/2/2015
15165       D1002       11/3/2015
15165       D1003       11/4/2015
15165       D1004       11/5/2015
15165       D1005       11/6/2015

显然我也可以使用一些关于如何格式化数据集的建议,我提前道歉。

2 个答案:

答案 0 :(得分:1)

我猜你希望RecordNum基于ClientNumVisitDate是唯一的。您可以使用以下内容找到异常:

select recordnum
from t
group by recordnum
having count(distinct clientnum) > 0 or count(distinct visitdate < 0);

答案 1 :(得分:-1)

SELECT DISTINCT ClientNum, VisitDate
FROM YourTable 
GROUP BY (ClientNum + CAST(VisitDate as varchar(20)))
HAVING COUNT (ClientNum + CAST(VisitDate as varchar(20))) > 1