我们可以在sqlserver中的连接条件的引用中传递别名

时间:2012-10-31 10:50:59

标签: sql sql-server

我有以下查询,但是当我传递此别名列名称的引用名称时,它显示无效的列名称我该怎么做

select OM.*,
       convert(int,Replace(Ltrim(Replace(left(OM.mstrefc,6), '0', ' ')), ' ', '0')) as partycode,
       OI.*,
       Ac.AcctName,
       Ac.acctaddr,
       UN.UnitName
from ordemst OM
  join ordeitd OI
    on OM.mstCode = OI.ItdCode
  join Account Ac 
    on OM.partycode = Ac.acctcode
  left join unitdet UN
    on OI.ItdUnit = UN.unitcode and 
       OI.CompCode = UN.CompCode 
where OM.MstCode = 47 and 
      OM.MstType =79 and 
      OM.CompCode =117 and 
      AC.compcode =117 and 
      OI.Compcode=117

1 个答案:

答案 0 :(得分:2)

您不能在join子句中使用select子句中的别名。

  

column_alias可以在ORDER BY子句中使用,但不能在WHERE,GROUP BY或HAVING子句中使用

并且显然不在加入条款中。

你必须用真实的东西替换别名:

join Account Ac 
on convert(int,Replace(Ltrim(Replace(left(OM.mstrefc,6), '0', ' ')), ' ', '0')) = Ac.acctcode

Taken from the MSSQL Doc