Как найти дубликаты записей в SQL? - PullRequest
4 голосов
/ 21 августа 2010

Я пытаюсь разработать запрос для вставки уникальных записей, но получаю сообщение об ошибке первичного ключа SQL Server при попытке вставить повторяющиеся записи. Мне удалось вставить некоторые значения с этим запросом, но не для этой записи (оценка_14).

Так что теперь я пытаюсь найти повторяющуюся запись с помощью следующего запроса. Проблема в том, что мой PK основан на 3 столбцах: StudentID, MeasureDate и MeasureID - все из другой таблицы, не упомянутой ниже.

Но это только показывает мне количество - вместо этого я хочу просто вернуть записи с количеством> 1. Как мне это сделать?

select count(a.score_14) as score_count, A.studentid, A.measuredate, B.measurename+' ' +B.LabelName 
from [J5C_Measures_Sys] A
join [J5C_ListBoxMeasures_Sys] B on A.MeasureID = B.MeasureID 
join sysobjects so on so.name = 'J5C_Measures_Sys' 
join syscolumns sc on so.id = sc.id 
join [J5C_MeasureNamesV2_Sys] v on v.Score_field_id = sc.name
where so.type = 'u' and sc.name = 'score_14' and a.score_14 is not null 
AND A.STUDENTID IS NOT NULL AND A.MEASUREDATE IS NOT NULL AND B.MEASURENAME IS NOT NULL
--and count(a.score_14)>1
group by a.studentid, a.measuredate, B.measurename, B.LabelName, A.score_14
having count(a.score_14) > 1

Ответы [ 2 ]

6 голосов
/ 21 августа 2010

Бет верна - вот мой переписать ваш запрос:

SELECT a.studentid, a.measuredate, a.measureid
  from [J5C_Measures_Sys] A
GROUP BY a.studentid, a.measuredate, a.measureid
  HAVING COUNT(*) > 1

Ранее:

SELECT a.studentid, a.measuredate, a.measureid
  from [J5C_Measures_Sys] A
  join [J5C_ListBoxMeasures_Sys] B on A.MeasureID = B.MeasureID 
  join sysobjects so on so.name = 'J5C_Measures_Sys'
                    AND so.type = 'u'
  join syscolumns sc on so.id = sc.id 
                    and sc.name = 'score_14' 
  join [J5C_MeasureNamesV2_Sys] v on v.Score_field_id = sc.name
 where a.score_14 is not null  
   AND B.MEASURENAME IS NOT NULL
GROUP BY a.studentid, a.measuredate, a.measureid
  HAVING COUNT(*) > 1
1 голос
/ 21 августа 2010

вам нужно вывести A.score_14 из вашей группы по предложению, если вы хотите посчитать его

...