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)