2016-12-19 4 views
1

Я пытаюсь идентифицировать дубликаты в нашей базе данных, и я хотел был бы сопоставлять по f.[summary] и f.[date].

Поскольку даты не уникальны, мне интересно, возможно ли это. Путь запрос написан сейчас, это будет соответствовать только f.[summary]Найти дубликаты записей по дате и названию

select 
    f.[summary] as [Title], 
    f2.[Possible_Duplicate_Count], 
    f.[date] AS [Date], 
    f.[type] as [Type], 
    f.[category] as [Category], 
    f.[status] as [Status], 
    (select u.[name] from [user] u where (u.[id] = f.[user])) as [User Name], 
    fp.[summary] as [Template] 
from [form] f 
left outer join [form] fp on (fp.[id] = f.[parent]) 
inner join 
(
    select f.[summary], count(*) as [Possible_Duplicate_Count] 
    from [form] f 
    group by f.[summary] 
    having count(*) > 1 
) f2 on (f.[summary] = f2.[summary]) 

where 
(
    (f.[parent] IN ('9e3c47d4-4f47-49bb-8ad4-4709c966ad38', '74069d7e-5ad6-4e7e-85f7-5402e67637ee')) 
    and 
    (f.[status] IN ('Confirmed')) 
) 
+0

1) Является ли сочетание даты и резюме уникального? 2) это дата или дата/время? – xQbert

+0

Пожалуйста, добавьте тег в свою СУБД –

+0

Привет, ни дата, ни название не уникальны. Я пытаюсь найти события с тем же названием и той же датой. Прямо сейчас запрос вытягивает события с одним и тем же именем, что вызывает проблему того, что он вызывает события с тем же именем, но произошло в прошлом году. – tonyweed

ответ

1

Попробуйте это:

select 
f.[summary] as [Title], 
f2.[Possible_Duplicate_Count], 
f.[date] AS [Date], 
f.[type] as [Type], 
f.[category] as [Category], 
f.[status] as [Status], 
(select u.[name] from [user] u where (u.[id] = f.[user])) as [User Name], 
fp.[summary] as [Template] 
from [form] f 
left outer join [form] fp on (fp.[id] = f.[parent]) 
where exists(
    select 'duplicate' 
    from [form] f2 
    where f2.summary = f.summary 
    and f2.date = f.date 
    and f2.id != f.id) 
and 
(
    (f.[parent] IN ('9e3c47d4-4f47-49bb-8ad4-4709c966ad38', '74069d7e-5ad6-4e7e-85f7-5402e67637ee')) 
and 
    (f.[status] IN ('Confirmed')) 
) 
+0

Привет Джо, это вызывает ошибку: Ошибка SQL [156] [S0001]: Неправильный синтаксис рядом с ключевым словом «где». com.microsoft.sqlserver.jdbc.SQLServerException: неправильный синтаксис рядом с ключевым словом «где». – tonyweed

+0

2 где утверждения: сделайте 2-й, где «и». – xQbert

+0

@tonyweed: Я исправил свой запрос –

Смежные вопросы