J'essaie de développer une requête pour retourner simplement des enregistrements non-dupliqués afin que je puisse les ajouter à ma base de données, mais je continue d'obtenir l'erreur d'enregistrement en double.Comment formuler T-SQL pour exclure les doublons?
J'ai essayé votre solution, mais j'ai toujours un problème d'erreur en double. J'ai supprimé les 35 lignes qui étaient en double. Quoi d'autre pourrait causer cela? Voici ma requête. Une partie de la confusion que je pense est que measureid est une seule colonne dans j5c_MasterMeasures, mais cette valeur provient de deux champs dans j5c_ListBoxMeasures_Sys.
CREATE TABLE #GOOD_RECORDS3 (STUDENTID VARCHAR(50), MEASUREDATE SMALLDATETIME, MEASUREID VARCHAR(100),
score_10 VARCHAR(100))
INSERT INTO #GOOD_RECORDS3
select A.studentid, A.measuredate, B.measurename+' ' +B.LabelName, A.score_10
from [J5C_Measures_Sys] A join [J5C_ListBoxMeasures_Sys] B on A.MeasureID = B.MeasureID
except
select A.studentid, A.measuredate, B.measurename+' ' +B.LabelName, A.score_10
from [J5C_Measures_Sys] A join [J5C_ListBoxMeasures_Sys] B on A.MeasureID = B.MeasureID
GROUP BY A.studentid, A.measuredate, B.measurename, B.LabelName, A.score_10
having COUNT(A.score_10) > 1
delete #GOOD_RECORDS3
from #GOOD_RECORDS3 a
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_10'
join [J5C_MeasureNamesV2_Sys] v on v.Score_field_id = sc.name
WHERE A.SCORE_10 IS NOT NULL AND A.STUDENTID IS NOT NULL AND A.MEASUREID IS NOT NULL
and exists (select 1 from J5C_MasterMeasures M
where M.StudentID = A.StudentID
and M.MeasureID = A.MeasureID)
Insert into J5C_MasterMeasures (studentid, measuredate, measureid, nce)
select A.studentid, A.measuredate, a.MEASUREID, A.score_10
from #GOOD_RECORDS3 a
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_10'
join [J5C_MeasureNamesV2_Sys] v on v.Score_field_id = sc.name
WHERE A.SCORE_10 IS NOT NULL AND A.STUDENTID IS NOT NULL AND A.MEASUREID IS NOT NULL
Merci beaucoup, Thomas. Cependant, lorsque j'exécute cette requête, elle renvoie 0 enregistrements. Peut-être est-ce parce que seules les trois premières colonnes comprennent la clé primaire. Oui, j'utilise SS 2008. J5C_MeasureNamesV2_Sys est ma table de recherche - mais pas particulièrement pertinent pour cette question. – salvationishere
J'ai mis à jour ma description. Tu peux le regarder? – salvationishere