2010-10-06 5 views
1

J'ai une table avec des colonnes: Date, Téléphone, Nom et Événement.SQL rechercher une entrée en double et l'insérer dans une nouvelle colonne

J'ai besoin d'une requête qui va d'abord reconnaître l'entrée de téléphone en double, puis affecter le nom de celui qui a la date la plus tôt à la colonne d'événement.

+0

Quelle version de SQL Server? En outre, vous souhaitez placer le 'Name' de l'enregistrement original dans le' Event' de l'enregistrement (s) en double? Aussi, que pensez-vous des numéros de téléphone en double? Est-ce 555-555-5555 le même que (555-555-5555? – LittleBobbyTables

+0

Je cours SQL Server 2000 – sqlman

+0

si la colonne de téléphone est un doublon, je veux prendre l'enregistrement avec la première date et mettre son nom dans la colonne d'événement de la copie avec la date plus ancienne ... j'espère que cela a du sens. dupliquer comme dans 1234567 étant le même que 1234567 – sqlman

Répondre

2

Utilisation:

UPDATE x 
    SET x.event = y.name 
    FROM YOUR_TABLE x 
    JOIN YOUR_TABLE y ON y.phone = x.phone 
    JOIN (SELECT t.phone, 
       MIN(t.date) As min_date 
      FROM YOUR_TABLE t 
     GROUP BY t.phone 
     HAVING COUNT(*) > 1) z ON z.phone = y.phone 
           AND z.min_date = y.date 
           AND z.min_date < x.date 

Mais il ne traite pas s'il y a des doublons de la valeur minimale.

+0

Qui met à jour la date d'enregistrement plus tôt, je pense que @sqlman veut l'enregistrement avec les dates les plus anciennes mises à jour. – LittleBobbyTables

+0

@OMG Ponies - J'ai été un peu confus par votre question, mais j'ai réalisé qu'il semble avoir répondu après avoir édité sa question, mais je vous assure que le commentaire était là en premier :) Votre requête met à jour les enregistrements avec les dates ultérieures , mais je pensais qu'il voulait le 'Name' du premier enregistrement dans le' Event' des enregistrements plus tard, tandis que votre requête rend l'événement et le nom de l'enregistrement le même. Je peux me tromper totalement sur ce que veut @sqlman, mon cerveau ne semble pas fonctionner correctement ce soir. – LittleBobbyTables

+0

@LittleBobbyTales "mais je pensais qu'il voulait le nom du plus ancien enregistrement dans l'événement des enregistrements plus tard" --Ceci est correct – sqlman

Questions connexes