Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verwenden von Aliassen in der Where-Klausel oder eine alternative Option?

Sie können den Alias ​​nicht in der WHERE-Klausel verwenden. Wiederholen Sie entweder den Ausdruck (unordentlich) oder setzen Sie Ihr SELECT in eine Unterabfrage und setzen Sie dann die WHERE-Klausel in die äußere Abfrage:

SELECT Id, Name, City, State
FROM
(
     SELECT
         ID, 
         Name,
         CASE T.N 
             WHEN 1 THEN City1
             WHEN 2 THEN City2
             WHEN 3 THEN City3
         END AS City,
         CASE T.N 
             WHEN 1 THEN State1
             WHEN 2 THEN State2
             WHEN 3 THEN State3
         END AS State
     FROM YourTable
     CROSS JOIN (VALUES(1),(2),(3)) AS T(N)
) T1
WHERE City IS NOT NULL