Avatar billede sbay Nybegynder
11. februar 2009 - 18:19 Der er 2 kommentarer

Fjerne dubletter i en tabel

Hejsa

Jeg har fået en større fil der nu er importeret i MSSQL 2000. Problemet er, at ham der har lavet filen ikke har tjekket for dubletter. Nu er tabellen taget i brug og vi skal have lavet en nøgle på tabellen - og det kan jeg jo ikke.

Jeg prøver så med følgende script, fundet hos MS, og rettet til men det virker ikke :-( Er der en der kan lure hvad der er galt?

SELECT  CoverCharge_Code, CoverCharge_Symp_Code, CoverCharge_CalT_Code, CoverCharge_Cont_Num, col3= count(*)
INTO holdkey
FROM SCCoverCharge
GROUP BY CoverCharge_Code, CoverCharge_Symp_Code, CoverCharge_CalT_Code, CoverCharge_Cont_Num
HAVING count(*) > 1


SELECT DISTINCT SCCoverCharge.*
INTO holddups
FROM SCCoverCharge, holdkey
WHERE SCCoverCharge.CoverCharge_Code = holdkey.CoverCharge_Code
AND SCCoverCharge.CoverCharge_Symp_Code = holdkey.CoverCharge_Symp_Code
AND SCCoverCharge.CoverCharge_CalT_Code = holdkey.CoverCharge_CalT_Code
AND SCCoverCharge.CoverCharge_Cont_Num = holdkey.CoverCharge_Cont_Num


DELETE SCCoverCharge
FROM SCCoverCharge, holdkey
WHERE SCCoverCharge.CoverCharge_Code = holdkey.CoverCharge_Code
AND SCCoverCharge.CoverCharge_Symp_Code = holdkey.CoverCharge_Symp_Code
AND SCCoverCharge.CoverCharge_CalT_Code = holdkey.CoverCharge_CalT_Code
AND SCCoverCharge.CoverCharge_Cont_Num = holdkey.CoverCharge_Cont_Num
AND SCCoverCharge.CoverCharge_ProdFamily_Code  = holdkey.CoverCharge_ProdFamily_Code


INSERT SCCoverCharge SELECT * FROM holddups
Avatar billede hkb-x Nybegynder
11. februar 2009 - 23:59 #1
lav en midlertidig tabel hvori du indsætter alle dine data gruperet efter de felter du vil have sum unikke. så tøm din oprindelige tabel og flyt indholdet fra den midlertidige tabel over i originalen og dine problemer er løst.


eksempel med tabellen t1 og felterne f1, f2, f3.

CREATE TEMPORARY TABLE temp_t1 (f1, f2, f3);
INSERT INTO temp_t1 (SELECT * FROM t1 GROUP BY f1, f2, f3);
TRUNCATE t1;
INSERT INTO t1 (SELECT * FROM temp_t1);
Avatar billede sbay Nybegynder
12. februar 2009 - 10:17 #2
Hejsa

Jeg har lidt døj med INSERT:

INSERT INTO dbo.temp  (SELECT * FROM dbo.SCCoverCharge GROUP BY CoverCharge_Code, CoverCharge_Symp_Code, CoverCharge_CalT_Code, CoverCharge_Cont_Num);

Fejl:
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'SELECT'.
Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near ')'.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester