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