2010-12-15 83 views
1

Je suis très nouveau à MS SQL et j'essaie d'obtenir tous les e-mails en double dans une table. J'ai trouvé une requête similaire qui fonctionne pour MySQL mais quand elle est exécutée en MS SQL, j'obtiens l'erreur Nom de colonne invalide 'ct'.Simple MS SQL Bug

La requête est que je lance:

SELECT 
    [ShipEmail], 
    COUNT(*) as ct 

FROM [ShipWorksDefault].[dbo].[Customers] GROUP BY [ShipEmail] HAVING [ct] > 1 

Je suppose qu'il ya quelque chose très simple, je suis plus à la recherche.

Merci beaucoup d'avance!

Répondre

9

il suffit de changer la clause HAVING de ne pas utiliser l'alias de colonne:

HAVING COUNT (*)> 1

0
SELECT 
    [ShipEmail], 
    COUNT(*) as ct 
FROM [ShipWorksDefault].[dbo].[Customers] 
GROUP BY [ShipEmail] HAVING COUNT(*) > 1 

ou

SELECT 
    [ShipEmail], 
    COUNT(*) as ct 
FROM [ShipWorksDefault].[dbo].[Customers] 
GROUP BY [ShipEmail] HAVING COUNT([ShipEmail]) > 1 
+0

Vouliez-vous dire compter (*)> 1? J'ai également essayé la deuxième version et j'ai obtenu un nombre différent d'enregistrements retournés que le compte ayant (*)> 1 – HLGEM

1

Vous ne pouvez pas utiliser l'alias dans la clause ayant. Essayez:

SELECT 
    [ShipEmail], 
    COUNT(*) as ct 

FROM [ShipWorksDefault].[dbo].[Customers] GROUP BY [ShipEmail] HAVING COUNT(*) > 1