SQL别名提供无效的列名

Beh*_*ens 4 sql sql-server sql-server-2005

使用以下SQL表达式但我收到错误.

select
  CampaignCustomer.CampaignCustomerID,
  convert(varchar, CampaignCustomer.ModifiedDate, 111) as startdate,
  CampaignCustomer.CampaignID,
  CampaignCustomer.CampaignCallStatusID,
  CampaignCustomer.UserID,
  CampaignCustomerSale.Value,
  Users.Name
from CampaignCustomer
  inner join CampaignCustomerSale
    on CampaignCustomer.CampaignCustomerID = CampaignCustomerSale.CampaignCustomerID
  inner join Users
    on CampaignCustomer.UserID = Users.UserID
where
  CampaignCustomer.CampaignCallStatusID = 21
  and CampaignCustomer.startdate = '2011/11/22'      <------- THIS
order by
  startdate desc,
  Users.Name asc
Run Code Online (Sandbox Code Playgroud)

错误:

消息207,级别16,状态1,行1
无效的列名称'startdate'.

我无法startdate在WHERE子句中识别我的别名,但它可以在我的ORDER BY子句中.怎么了?

编辑:
不,我不可能将数据类型更改为date而不是datetime.其他地方需要时间.但在这种情况下,我只需要在特定日期获得所有帖子,而我真的不关心日期modifieddate是什么时间:)

也许需要另一种方法而不是convert()?

Cur*_*urt 10

您不能在WHERE子句中使用列别名.


将其更改为:

where
  CampaignCustomer.CampaignCallStatusID = 21
  and convert(varchar, CampaignCustomer.ModifiedDate, 111) = '2011/11/22' 
Run Code Online (Sandbox Code Playgroud)

  • @erizias - "SELECT @@ VERSION"说什么? (3认同)