TroxyMedlem sedan mars 20041 505 inlägg Hallå, jag har problem med dubletter i en tabell.
Det känns som ett så simpelt problem, men jag lyckas inte lösa det.
Använder SQL Server 2000.
Jag har en fet tabell med massor av kunder i, där det bla. finns personnummer, namn, adress, telefon mm.
Det finns dubbletter, dvs. samma personnummer förekommer ibland två eller tre gånger.
Jag vill göra en SELECT på alla kunder men bara få ut dom EN gång.
DISTINCT fungerar inte i detta fall eftersom andra fält kan skilja sig en aning.
Så det är personnumret man måste gå på.
Hur ska jag lösa detta?
Står helt still i huvudet. x(
Tacksam för svar! :)
Peter SMedlem sedan dec. 20025 483 inlägg Om samma person existerar på flera rader, vilken av dessa vill du då ha? Det är vad du måste bestämma. Princip:
select [red]field1
, field2
, ...
, fieldn[/red]
from t
group
by [red]field1
, field2
, ...
, fieldn[/red]
TroxyMedlem sedan mars 20041 505 inlägg Det spelar ingen roll vilken person som väljs, eftersom det är samma person.
Gruppring löser tyvärr inte problemet.
Jag vill ju hämta gatuadress, postnr och allt sånt.
Då måste jag även gruppera på dessa fält.
Men oftast så är fälten inte exakt lika ifyllda, det kan skilja lite mellanrum, vara stavfel.
TroxyMedlem sedan mars 20041 505 inlägg Finns det ingen smidig lösning?
Här är ett förenklat exempel:
persnr förnamn efternamn adress
-------------------------------------------------
9090909090 sven svensson grönvägen 1
[red][B]9090909090 sven svensson grönv 1[/B][/red]
8080808080 anders andersson storgatan 2
[red][B]8080808080 anders andersson storg.2[/B][/red]
Hur gör jag en Select som skippar dom feta raderna?
(eller egentligen spelar det ingen roll vilka rader som skippas, så länge personnumret förekommer EN gång)
LarsGMedlem sedan dec. 200012 464 inlägg select persnr,förnamn,efternamn,adress
from t as q
where adress in
(select max(adress)
from t
where t.persnr = q.persnr)
TroxyMedlem sedan mars 20041 505 inlägg Tack så mycket, ska testa direkt.
Men tyvärr så misstänker jag att det inte är en hållbar lösning eftersom adressen ibland är lika.
EDIT:
Jag byggde om din lösning lite LarsG, och fick en som fungerade!
Genom att använda fältet ID istället för Adress så fungerar det, eftersom ID alltid är unikt!
select persnr,förnamn,efternamn,adress
from t as q
where id in
(select max(id)
from t
where t.persnr = q.persnr)