0

次のクエリがありますが、このエイリアス列名の参照名を渡すと、無効な列名が表示されます。どうすればこれを行うことができますか

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
4

1 に答える 1

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

MSSQL Doc から取得

于 2012-10-31T10:54:55.753 に答える