Mise à jour de données ayant le même ID mais des données différentes dans la ligne

J'ai un logging avec le même ID mais des données différentes dans les deux lignes Pendant la mise à jour le résultat final devrait être le dernier logging de cet ID présent dans datatables. Exemple

ID | Name | PermanentAddrss | CurrentLocation 1 | R1 | INDIA | USA 1 | R1 | INDIA | UK 

Maintenant pour ID 1 l'logging qui sera chargé dans la database

 1|R1|INDIA|UK 

Comment cela peut-il être fait dans le server SQL pour plusieurs loggings?

S'il vous plaît comprendre que le server SQL ne stocke pas ou ne récupère pas datatables dans l'ordre de l'insertion des données, donc pour find le dernier / dernier logging, vous devriez avoir un moyen de order les loggings. C'est généralement une colonne d'horodatage comme last_modified_date . Votre table actuelle est le candidat principal pour une dimension de changement lente de type 2; et vous devriez envisager de l'appliquer. Voir l' explication sur le site du groupe de Kimball.

Si vous n'êtes vraiment pas affecté par une command et avez juste besoin d'une ligne pour chaque identifiant, vous pouvez essayer ci-dessous la requête.

 select ID, Name, PermanentAddress, CurrentLocation from (select *, row_number() over(partition by id order by (select null)) r from yourtable)t where r=1 

Vous pouvez identifier la dernière valeur d' ID par:

 SELECT B.ID, A.NAME, A.PERMANENTADDRS, A.CURRENTLOCATION FROM (SELECT ID, NAME, PERMANENTADDRS, CURRENTLOCATION, MAX(RNUM) AS LATEST_ID FROM (SELECT ID, NAME, PERMANENTADDRS, CURRENTLOCATION, ROW_NUMBER() OVER (PARTITION BY ID) AS RNUM FROM YOUR_TABLE) GROUP BY ID, NAME, PERMANENTADDRS, CURRENTLOCATION) A INNER JOIN YOUR_TABLE B ON A.LATEST_ID = B.ID; 

Cela prendra le dernier logging rempli pour une valeur d' ID donnée. Si la logique du dernier logging est différente, elle peut être incorporée de manière appropriée dans la requête.