使用以下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


错误:


消息207,第16级,状态1,第1行
无效的列名“ startdate”。


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

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

也许需要其他方法来代替convert()?

最佳答案

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



更改为:

where
  CampaignCustomer.CampaignCallStatusID = 21
  and convert(varchar, CampaignCustomer.ModifiedDate, 111) = '2011/11/22'

09-26 07:37