Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Résultat de requête plus élevé avec le mot-clé DISTINCT ?

Ce n'est pas techniquement une réponse, mais comme j'ai pris le temps d'analyser cela, je pourrais aussi bien le poster (même si je risque d'être défait).

Je n'avais aucun moyen de reproduire le comportement décrit.

Voici le scénario :

declare @table table ([user id] int)

insert into @table values 
(1),(1),(1),(1),(1),(1),(1),(2),(2),(2),(2),(2),(2),(null),(null)

Et voici quelques requêtes et leurs résultats :

SELECT COUNT(User ID) FROM @table --error: this does not run
SELECT COUNT(dsitinct User ID) FROM @table --error: this does not run
SELECT COUNT([User ID]) FROM @table --result: 13 (nulls not counted)
SELECT COUNT(distinct [User ID]) FROM @table --result: 2 (nulls not counted)

Et quelque chose d'intéressant :

SELECT user --result: 'dbo' in my sandbox DB
SELECT count(user) from @table --result: 15 (nulls are counted because user value
                                             is not null)
SELECT count(distinct user) from @table --result: 1 (user is the same  
                                                     value always)

Je trouve très étrange que vous puissiez exécuter les requêtes exactement comme vous l'avez décrit. Vous devez nous indiquer la structure de la table et les données pour obtenir de l'aide supplémentaire.