2009-01-07 5 views
0

je la requête suivante qui fonctionne très bien avec MySQL, mais refuse de travailler avec le serveur SQL:SQL Server - Utilisation d'un alias de colonne dans une sous-requête

SELECT table1.someField AS theField, 
     COUNT(table2.someField)/(SELECT COUNT(someField) FROM table1 WHERE someField = theField), 
FROM table1 LEFT JOIN table2 ON table1.someField = table2.someField 

SQL Server ne semble pas que l'alias dans le sous-requête. On m'a dit que je devais utiliser un CTE mais je ne les ai jamais utilisés auparavant. Est-ce correct?

Répondre

3

Le problème pourrait bien être dans la confusion dans la sous-requête

SELECT COUNT(someField) FROM table1 WHERE someField = theField 

la someField dans la condition sera locale - mais vous pouvez arriver à table1.someField la même chose.

Que diriez-vous

SELECT COUNT(t3.someField) FROM table1 t3 WHERE t3.someField = table1.someField 

?