列名sql isull()子句,其中

| 我无法在IdCell列上创建where子句,但可以执行\“ order by \”。 SQL Server对列名称说错误
    select 
    *, (ISNULL(Table_Adresses.IdCellule, Table_Clients.IdCellule)) as IdCell
    from Table_Tickets 
    left join Table_Postes on Table_Postes.IdPoste = Table_Tickets.IdPoste
    left join Table_Adresses on Table_Adresses.IdAdresse = Table_Postes.IdAdressePhysique
    left join Table_Clients on Table_Clients.IdClient = Table_Tickets.IdClient
    where idtypeticket=2 and 
    isnull(bcloture,0)=0 and 
    IdCell =4 --problem here
    order by IdCell
为什么我不能在IdCell上找到位置? 谢谢     
已邀请:
        您不能以这种方式使用别名列,您需要执行以下操作:
and (ISNULL(Table_Adresses.IdCellule, Table_Clients.IdCellule)) = 4
    
        尽管SQL(语言)迫使您以
SELECT-FROM-WHERE-ORDER BY
的顺序构造查询,但是(有效地)它以
FROM-WHERE-SELECT-ORDER BY
的顺序执行。这就是为什么可以在
ORDER BY
子句中使用
AS
子句(\“列别名\”)
IdCell
而不在
WHERE
子句中使用的原因,即
IdCell
不在
WHERE
子句的范围内,因为它只会在以后出现。     
        
   select 
    *, (ISNULL(Table_Adresses.IdCellule, Table_Clients.IdCellule)) as IdCell
    from Table_Tickets 
    left join Table_Postes on Table_Postes.IdPoste = Table_Tickets.IdPoste
    left join Table_Adresses on Table_Adresses.IdAdresse = Table_Postes.IdAdressePhysique
    left join Table_Clients on Table_Clients.IdClient = Table_Tickets.IdClient
    where idtypeticket=2 and 
    isnull(bcloture,0)=0 and 
    (ISNULL(Table_Adresses.IdCellule, Table_Clients.IdCellule)) =4 
    order by IdCell
    
        
select 
    *, (ISNULL(Table_Adresses.IdCellule, Table_Clients.IdCellule)) as IdCell
    from Table_Tickets 
    left join Table_Postes on Table_Postes.IdPoste = Table_Tickets.IdPoste
    left join Table_Adresses on Table_Adresses.IdAdresse = Table_Postes.IdAdressePhysique
    left join Table_Clients on Table_Clients.IdClient = Table_Tickets.IdClient
    where idtypeticket=2 and 
    bcloture is null and
    (ISNULL(Table_Adresses.IdCellule, Table_Clients.IdCellule)) = 4 
    order by IdCell
    

要回复问题请先登录注册