J'ai une vue en SQL qui rassemble certaines données dans lesquelles j'ai besoin d'éliminer les valeurs en double. J'ai essayé d'utiliser DISTINCT et GROUP BY sans succès. Fondamentalement, ce que nous avons en cours est une série de fichiers téléchargés qui sont attachés à un fournisseur en fonction du type de document qu'il est. Ils téléchargeront plusieurs versions du document au cours des différentes phases des signatures.éléments en double dans la vue SQL/requête
Chaque fois qu'ils téléchargent une nouvelle phase du document, une nouvelle ligne est ajoutée à la table UploadedDocuments, le RequiredDocumentsID reste le même mais le nom de fichier dans la table UploadedFiles (ainsi que le champ ID dans cette table) sont nouveaux.
Historiquement, cela n'a pas été un problème car nous recherchons normalement cette information un fournisseur à la fois - auquel cas nous prenons simplement la plus récente pour chaque type de document. Maintenant, cependant, nous avons une nouvelle page qui est en cours d'élaboration et qui doit afficher TOUS les fournisseurs à la fois, mais il suffit de lister chacun une seule fois et de ne lister que les colonnes Filename/Path les plus récentes.
Voici la vue que j'ai actuellement. Comme mentionné précédemment, j'ai essayé de mettre la première valeur comme 'DISTINCT dbo.ReqDocuments.ID' ainsi que de faire un GroupBy. Les deux thèses ont échoué à éliminer l'un des doublons. Je pensais à un OUI appliqué, mais mes compétences tSQL ne sont pas encore à ce niveau.
SELECT dbo.UploadedFiles.FileName, dbo.UploadedFiles.FilePath,
dbo.ReqDocuments.ProviderID, dbo.Providers.CompanyName,
dbo.ReqDocuments.ID AS RequiredDocumentID, dbo.UploadedFiles.aDate,
dbo.UploadedFiles.aUser
FROM dbo.Providers
INNER JOIN dbo.ReqDocuments ON dbo.Providers.ID = dbo.ReqDocuments.ProviderID
INNER JOIN dbo.UploadedFiles ON dbo.ReqDocuments.ID = dbo.UploadedFiles.ReqDocumentsID
WHERE (dbo.ReqDocuments.DocumentID = 50)
Mes excuses pour ne pas mentionner, mais cette base de données est actuellement encore sur SQL 2000. Il devrait être déplacé à 2008 dans le "proche" futur, nous avons travaillé à travers les problèmes avec une application héritée et le futur proche semble continuellement s'allonger. – Talion83
@ Talion83 J'ai modifié la réponse pour utiliser des sous-requêtes corrélées au lieu du rang. Je n'ai pas votre schéma complet, donc il peut y avoir une meilleure colonne à sélectionner dans la requête interne, comme innerF.ID. –
Génial qui semble le faire! Merci beaucoup pour l'aide. – Talion83