Utiliser la colonne définie à partir de la sous-requête dans la requête

J'ai besoin d'utiliser la valeur obtenue de SEATS_RESERVED comme ça. La requête ci-dessous me donne une erreur de nom de colonne "SEATS_RESERVED" non valide.

SELECT *, SEATS_RESERVED = (SELECT COUNT(UID) FROM person WHERE person.RES_DATE = reservation_dates.RES_DATE AND person.ARCHIVE = 'FALSE') FROM reservation_dates WHERE TERM = ? AND SEATS_RESERVED < MAX_SEATS; 

Vous ne pouvez pas créer un champ dérivé dans le SELECT et le referencer dans la clause WHERE.

Il y a plusieurs options pour faire face à cela, voici une avec le less de changements à votre requête.

 SELECT * FROM ( SELECT *, SEATS_RESERVED = (SELECT COUNT(UID) FROM person WHERE person.RES_DATE = reservation_dates.RES_DATE AND person.ARCHIVE = 'FALSE') FROM reservation_dates WHERE TERM = ? ) AS data WHERE SEATS_RESERVED < MAX_SEATS; 

Vous essayez de définir SEATS_RESERVED égal à une valeur dans votre sous-requête, mais vous n'avez pas encore déclaré SEATS_RESERVED. De plus, où MAX_SEATS est-il défini?

Que dis-tu de ça:

 DECLARE @MAX_SEATS INT SET @MAX_SEATS = <some integer> SELECT *, (SELECT COUNT(UID) FROM person WHERE person.RES_DATE = reservation_dates.RES_DATE AND person.ARCHIVE = 'FALSE' HAVING COUNT(UID) < @MAX_SEATS;) AS SEATS_RESERVED FROM reservation_dates WHERE TERM = ?