Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL:utilizzare un campo calcolato da SELECT nella clausola WHERE

Usa una CTE (Common Table Expression) - una sorta di vista "inline" solo per l'istruzione successiva:

;WITH MyCTE AS
(
    SELECT 
        RANK() OVER(PARTITION BY XXX ORDER BY yyy,zzz,oooo) as ranking, 
        * 
    FROM SomeTable
) 
SELECT * 
FROM MyCTE
WHERE ranking = 1 --> this is now possible!