「tbMemeberInfo」と「tbDocument」の2つのテーブルがあります。
ドキュメントがアップロードされると、フィールドInfoIDがtbDocumentに記録されます。これは、tbMemeberInfoのPK(MemberInfoID)です。
ただし、tbMemeberInfoには重複があります。ユーザーには「AgreementNo」と「IDNumber」があり、重複するレコードにはどちらか一方しか含まれていません。
これらのレコードをマージして、「AgreementNo」と「IDNumber」を一方のレコードに挿入し、もう一方を削除する必要があります。
これが私がこれまでに試したテーブル構造とコードです...
tbMemberInfo
MemberInfoID AgreementNo IDNumber DOB Initials FirstName LastName Language Role CountryID Email
861616 124346665 NULL 1976-08-24 00:00:00.000 DV DAMIAN Example English Member 1 damian.example@mail.com
866185 NULL 7608241234123 1976-08-24 00:00:00.000 DV DAMIAN Example English Member 1 damian.example@mail.com
tbDocument
DocumentID r_object_id DocumentTypeID UniqueDocumentNo ContentLength ContentType FileName CreatedUserID CreatedDate InfoID
293787 0900d431800bc987 13 PPS156329L 1753819 application/pdf Example_DV_PROV_APP_2009110316140300[1].pdf 362 2010-01-13 16:21:46.250 861616
293794 0900d431800bc998 530 PPS156335O 66750 image/tiff Example, DV DRS REPORT.tif 362 2010-01-13 16:26:48.420 861616
SQLコード
DECLARE
@MemberInfoID int
,@AgreementNo varchar(50)
,@IDNumber varchar
,@DOB datetime
,@TitleID int
,@FirstName varchar(150)
,@LastName varchar(150)
,@ModifiedDate datetime
SELECT @AgreementNo = AgreementNo, @IDNumber = IDNumber, @FirstName = FirstName, @LastName = LastName, @DOB = DOB
FROM tbMemberInfo mi
INNER JOIN tbDocument d
ON mi.MemberInfoID = d.InfoID
WHERE (mi.AgreementNo = '') OR (mi.IDNumber = '')
--SELECT @IDNumber = IDNumber From tbMemberInfo mi
--INNER JOIN tbDocument d
--ON mi.MemberInfoID = d.InfoID
--WHERE (mi.AgreementNo = '')
--SELECT @AgreementNo = AgreementNo From tbMemberInfo mi
--INNER JOIN tbDocument d
--ON mi.MemberInfoID = d.InfoID
--WHERE (mi.IDNumber = '') AND (FirstName = @FirstName) AND (LastName = @LastName) AND (DOB = @DOB)
UPDATE tbMemberInfo
SET [IDNumber] = @IDNumber, [AgreementNo] = @AgreementNo, ModifiedDate = GETDATE()
FROM tbMemberInfo mi
INNER JOIN tbDocument d
ON mi.MemberInfoID = d.InfoID
WHERE (IDNumber = '') OR (AgreementNo = '') AND (FirstName = @FirstName)
AND (LastName = @LastName) AND (DOB = @DOB)
GROUP BY MemberInfoID
これはどれも機能していません。すべてのIDNumber列に「7」を入れます。これを行う方法に関するアイデア。重複を削除することに慣れていないので、最初にマージしたいと思います。