Avoir ne devrait pas vous faire peur, il est juste un « Où » sur un champ agrégé:
Select UserID, Count(*) From OrderTbl Group By UserID Having Count(*) > 1
Cela vous donnera tous les utilisateurs qui ont plusieurs commandes.
Select UserID, Count(*) From OrderTbl Where ([email protected]) Group By UserID Having Count(*) > 1
vous donnera le nombre s'il y a plusieurs enregistrements pour l'ID utilisateur dans @UserID et null sinon.
if exists (Select UserID, Count(*) From OrderTbl Where ([email protected]) Group By UserID
Having Count(*) > 1) Select 1 else Select 0
retournera 1 s'il y a plusieurs enregistrements pour l'utilisateur, 0 sinon.
Mise à jour: Je ne savais pas que vous pouviez avoir plusieurs commandes par jour. Cette requête fera ce que vous voulez:
With DistinctDates as (Select Distinct UserID, [DATE] From OrderTbl Where ([email protected]))
Select UserID, Count(*) From DistinctDates
Group By UserID Having Count(*) > 1
C'est un bon début, mais j'ai besoin de tester si elles ont des commandes passées sur différents jours. En d'autres termes, s'ils ont 15 ordres le 2/4/2010, ils devraient toujours retourner un 0. Si toutefois ils ont 1 ordre le 2/3/2010, et 15 ordres le 2/4/2010, il devrait retourner un 1. – Kyle
J'ai essayé de regrouper selon mon champ de datation en pensant que ça m'amènerait là, mais pas de dés ... des idées? – Kyle
Je l'ai corrigé, Kyle, une fois je suis revenu et j'ai vu votre note. Désolé de ne pas lire plus attention la première fois! –