J'ai une table FileInfo avec les colonnes ci-dessous
**(SID int) Primary Key & AutoIncrement, FileName varchar, FilePath varchar, fileExtn varchar, CreatedDate smalldatetime, Duplicate varchar, LatestCopy varchar.**
les loggings dans ce sont comme montré ci-dessous
1, 02-2511-510.pdf, C:\Desktop\02-2511-510.pdf, .pdf, 2000-10-12 00:00:00, NULL, NULL 2, 04-4648-500.doc, C:\Desktop\04-4648-500.doc, .doc, 2010-10-01 00:00:00, NULL, NULL 3, 02-2511-510.pdf, D:\Users\ers\02-2511-510.pdf, .pdf, 2000-11-13 00:00:00, NULL, NULL 4, 02-2511-510.pdf, E:\AGES\02-2511-510.pdf, .pdf, 2000-10-12 00:00:00, NULL, NULL
Après l'exécution de la procédure stockée, datatables de la table doivent ressembler à celles indiquées ci-dessous
1, 02-2511-510.pdf, C:\Desktop\02-2511-510.pdf, .pdf, 2000-10-12 00:00:00, Y, N 2, 04-4648-500.doc, C:\Desktop\04-4648-500.doc, .doc, 2010-10-01 00:00:00, N, Y 3, 02-2511-510.pdf, D:\Users\ers\02-2511-510.pdf, .pdf, 2013-11-13 00:00:00, Y, Y 4, 02-2511-510.pdf, E:\AGES\02-2511-510.pdf, .pdf, 2000-10-12 00:00:00, Y, N
Je suis capable d'écrire une procédure stockée pour find les duplicates et mettre à jour la colonne Dupliquer comme Y / N. Je veux également inclure le marquage de LatestCopy dans la même procédure stockée. Comment puis je faire ça.
Mes excuses si j'ai fait une erreur, car j'apprends le SQL maintenant.
Cordialement
Vos données actuelles
╔═════╦═════════════════╦══════════════════════════════╦══════════╦═════════════════════╦═══════════╦════════════╗ ║ SID ║ FileName ║ FilePath ║ fileExtn ║ CreatedDate ║ Duplicate ║ LatestCopy ║ ╠═════╬═════════════════╬══════════════════════════════╬══════════╬═════════════════════╬═══════════╬════════════╣ ║ 1 ║ 02-2511-510.pdf ║ C:\Desktop\02-2511-510.pdf ║ .pdf ║ 2000-10-12 00:00:00 ║ NULL ║ NULL ║ ║ 2 ║ 04-4648-500.doc ║ C:\Desktop\04-4648-500.doc ║ .doc ║ 2010-10-01 00:00:00 ║ NULL ║ NULL ║ ║ 3 ║ 02-2511-510.pdf ║ D:\Users\ers\02-2511-510.pdf ║ .pdf ║ 2000-11-13 00:00:00 ║ NULL ║ NULL ║ ║ 4 ║ 02-2511-510.pdf ║ E:\AGES\02-2511-510.pdf ║ .pdf ║ 2000-10-12 00:00:00 ║ NULL ║ NULL ║ ╚═════╩═════════════════╩══════════════════════════════╩══════════╩═════════════════════╩═══════════╩════════════╝
Mettre à jour les requêtes
1) Mettre à jour lorsque datatables sont dupliquées
;WITH Updateables AS ( SELECT * , rn = ROW_NUMBER() OVER (PARTITION BY [FileName] ORDER BY [FileName]) DESC) FROM Table_Name ) UPDATE Updateables SET Duplicate = 'Y' WHERE [FileName] IN (SELECT [FileName] FROM Updateables WHERE rn > 1 )
2) Mettre à jour à Y
la dernière version
;WITH Updateables AS ( SELECT * , rn2 = ROW_NUMBER() OVER (PARTITION BY [FileName] ORDER BY CreatedDate DESC) FROM Table_Name ) UPDATE Updateables SET LatestCopy = 'Y' WHERE [SID] IN (SELECT [SID] FROM Updateables WHERE rn2 = 1)
Jeu de résultats
╔═════╦═════════════════╦══════════════════════════════╦══════════╦═════════════════════╦═══════════╦════════════╗ ║ SID ║ FileName ║ FilePath ║ fileExtn ║ CreatedDate ║ Duplicate ║ LatestCopy ║ ╠═════╬═════════════════╬══════════════════════════════╬══════════╬═════════════════════╬═══════════╬════════════╣ ║ 1 ║ 02-2511-510.pdf ║ C:\Desktop\02-2511-510.pdf ║ .pdf ║ 2000-10-12 00:00:00 ║ Y ║ NULL ║ ║ 2 ║ 04-4648-500.doc ║ C:\Desktop\04-4648-500.doc ║ .doc ║ 2010-10-01 00:00:00 ║ NULL ║ Y ║ ║ 3 ║ 02-2511-510.pdf ║ D:\Users\ers\02-2511-510.pdf ║ .pdf ║ 2000-11-13 00:00:00 ║ Y ║ Y ║ ║ 4 ║ 02-2511-510.pdf ║ E:\AGES\02-2511-510.pdf ║ .pdf ║ 2000-10-12 00:00:00 ║ Y ║ NULL ║ ╚═════╩═════════════════╩══════════════════════════════╩══════════╩═════════════════════╩═══════════╩════════════╝