Opdatere PersonID i persontabel
HejJeg har en række kunder i en kundedatabase jeg skal have genereret et Unik_KundeID på.
Hver person har et:
Unik_RecordID
Matchnavn1
Matchnavn2
Matchnavn3
Jeg skal så have oprettet et Unik_KundeID
således at hvert emne bliver opdateret med det laveste Unik_RecordID der findes i databasen.
Her skal jeg så først grupere/matche på Matchnavn1 herefter Matchnavn2 og så Matchnavn3
Det er ikke svært at finde det laveste ID på Matchnavn1, men når jeg så skal tjekke på Matchnavn2 får jeg et problem.
Hvis nu jeg i første omgang finder 3 emner der matcher på Matchnavn1 vil de så alle 3 få det lavest mulighe ID MIN(Unik_RecordID) = Unik_KundeID.
Men når jeg så tjekker på Matchnavn2 finder jeg 1 dublet mere, og her får jeg et problem.
Her risikerer jeg at finde et nyt Unik_RecordID der er lavere end det jeg før fandt.
Så skal jeg tilbage og have opdateret de 3 andre til det nye "laveste" Unik_RecordID.
Mit batch skal kunne køres dagligt
Her er lidt SQL som det er nu til de 2 første steps, men det giver jo som sagt fejl.
go
DROP TABLE [dbo].[temp_matchtabel]
go
SELECT Min(Unik_RecordID) AS Min_Unik_RecordID,
matchnavn1,
Count(*) AS antal
INTO [dbo].[temp_matchtabel]
FROM [dbo].[kundedatabase]
GROUP BY matchnavn1
HAVING Count(*) > 1
go
UPDATE p
SET p.[Unik_KundeID] = m.[min_Unik_RecordID],
p.[Unik_KundeIDmatchtype] = '01_Matchnavn1'
FROM [dbo].[kundedatabase] p,
[dbo].[temp_matchtabel] m
WHERE p.matchnavn1 = m.matchnavn1
go
DROP TABLE [dbo].[temp_matchtabel]
go
SELECT Min(Unik_RecordID) AS Min_Unik_RecordID,
matchnavn2,
Count(*) AS antal
INTO [dbo].[temp_matchtabel]
FROM [dbo].[kundedatabase]
GROUP BY matchnavn2
HAVING Count(*) > 1
go
UPDATE p
SET p.[Unik_KundeID] = m.[min_Unik_RecordID],
p.[Unik_KundeIDmatchtype] = '02_Matchnavn2'
FROM [dbo].[kundedatabase] p,
[dbo].[temp_matchtabel] m
WHERE p.matchnavn2 = m.matchnavn2
go
Er der nogle der har forslag til hvad jeg kan gøre for heletiden at være sikker på jeg får dat laveste ID på alle dubletter ligemeget om de er fundet på matchnavn1, matchnavn2 eller matchnavn3?
på forhånd tak :)