2008-09-23 11 views
1

J'écris une requête dans SQL Server2005. Cela me renvoie un doublon dans le résultat. Puis-je éliminer cette duplication avec une colonne particulière comme clé?Résultat en double

Répondre

9

Vous pouvez éliminer les lignes dupliquées complètes à l'aide du mot clé DISTINCT. S'il existe une colonne de clé qui est un doublon mais que le reste des colonnes ne l'est pas, vous devez alors utiliser des fonctions d'agrégation et une clause GROUP BY pour expliquer à SQL Server les données que vous voulez renvoyer.

0

Il est possible que votre résultat contienne à la fois un tableau associatif et un tableau numérique. SELECT DISTINCT élimine les doublons.

0

Si vous voulez juste une colonne:

SELECT DISTINCT MyColumn FROM MyTable; 

Si vous voulez une variété de colonnes, de retour peut-être un maximum ou d'une somme, essayez le groupant:

SELECT MyFirstColumn, MySecondColumn, MAX(SomeDate) AS MaxDate, SUM(Amount) AS TotalAmount 
FROM MyTable 
GROUP BY MyFirstColumn, MySecondColumn; 
+0

Plusieurs colonnes avec distinctes devraient également convenir. Tant que les opérations globales ne sont pas nécessaires. –

+0

mais serai-je capable de faire un groupby sur les résultats d'une exécution de procédure stockée? comme exec sp_depends tbl_control_quarterly_milestone – Vinodtiru

3

Vous pouvez utiliser SELECT DISTINCT pour éliminer les doublons, comme cela a été conseillé dans d'autres commentaires, et cela peut fonctionner assez bien pour l'instant, mais vous pouvez supplier pour des problèmes futurs. Trop souvent, si vous ne pouvez pas obtenir un résultat unique sans SELECT DISTINCT, votre modèle de base de données a été dénormalisé trop loin, et vos requêtes peuvent s'enliser en récupérant puis en éliminant un grand nombre de doublons. (Cependant, normaliser un schéma de base de données existant est rarement trivial ...)

Sans plus d'informations sur le schéma et la requête, il est impossible de dire si SELECT DISTINCT est une solution de contournement acceptable ou s'il existe simplement une meilleure jointure déclaration.

0

Comme vous l'avez souligné dans les commentaires, vous utilisez une procédure stockée. Une façon de gérer ce cas consiste à créer une table temporaire que vous remplissez à l'aide de la procédure stockée. Sélectionnez ensuite les résultats de la table temporaire et éliminez les doublons avec SELECT DISTINCT ou GROUP BY.