-1

データベースに追加できるように、重複していないレコードのみを返すクエリを開発しようとしていますが、重複レコード エラーが発生し続けます。

私はあなたの解決策を試しましたが、まだ重複エラーの問題が発生しています。重複していた 35 行を削除しました。他に何が原因でしょうか?これが私のクエリです。私が思う混乱の一部は、メジャー ID が j5c_MasterMeasures の単一の列であるが、この値は j5c_ListBoxMeasures_Sys の 2 つのフィールドから取得されることです。

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
4

1 に答える 1

0

の一意の制約の詳細については言及していませんJ5C_MasterMeasures。したがって、挿入される 4 つの列はすべて制約の一部であると想定しました。さらに、あなたが を使用Exceptしていることから、SQL Server 2005 以降を使用していると思われます。さらに、結合がJ5C_MeasureNamesV2_Sys設計またはソリューションにどのように適合するかは明確ではありません。

With GoodRecords As
    (
    Select A.StudentId
        , A.measuredate
        , B.measurename+ ' ' +B.LabelName
        , A.score_10 As NCE
    From [J5C_Measures_Sys] A 
        Join [J5C_ListBoxMeasures_Sys] B 
            On A.MeasureID = B.MeasureID
    Where A.StudentId Is Not Null
        And A.Score_10 Is Not Null
        And A.MeasureId Is Not Null
    Group By A.StudentId
        , A.MeasureDate
        , B.MeasureName+ ' ' +B.LabelName
        , A.score_10 
    Having Count(A.Score_10) = 0
    )
Insert J5C_MasterMeasures ( StudentId, MeasureData, MeasureId, NCE )
Select GR.StudentId, GR.MeasureData, GR.MeasureId, GR.NCE
From GoodRecords As GR
    Join [J5C_MeasureNamesV2_Sys] v 
        On v.Score_field_id = 'Score_10'
Where Not Exists    (
                    Select 1
                    From J5C_MasterMeasures As J1
                    Where J1.StudentId = GR.StudentId
                        And J1.MeasureData = GR.MeasureData
                        And J1.MeasureId = GR.MeasureId
                        And J1.NCE = GR.NCE
                    )
于 2010-08-24T04:56:52.920 に答える