2013-12-10 40 views
-2
SELECT LM.LocationName , 
     PPD.RegistrationNo , 
     ISNULL(PPD.Title, '') + ' ' + ISNULL(PPD.FirstName, '') + ' ' 
     + ISNULL(PPD.LastName, '') AS CustomerName , 
     PPD.RegistrationDate , 
     PPD.Ref_By_Patient , 
     ISNULL(PPD1.Title, '') + ' ' + ISNULL(PPD1.FirstName, '') + ' ' 
     + ISNULL(PPD1.LastName, '') AS Ref_By_PatientName , 
     PPD.Mobile , 
     PPD.Res_Telephone , 
     PPD.Off_Telephone , 
     PPD.EMail , 
     KB.KwnBy , 
     RTM.RegType , 
     PPD.Street , 
     AM.area_name , 
     CM.city_name , 
     DM.DoctorName , 
     PPD.SpecialDiscount , 
     PPD.SpecialDisPercentage , 
     PPD.ServiceDisPercentage , 
     PPD.Type , 
     PPD.TypeChangedDate 
FROM Patient_Personal_Details PPD , 
     LocationMaster LM , 
     KnownBy KB , 
     Area_Master AM , 
     RegTypeMaster RTM , 
     City_Master CM , 
     Doctor_Master DM , 
     Patient_Personal_Details PPD1 
WHERE PPD.Loc_Id = LM.LocationCode 
     AND PPD.Knownby*=CAST(KB.Knwid AS VARCHAR(25)) 
     AND PPD.Area*=AM.area_id 
     AND PPD.City*=CM.city_id 
     AND PPD.Doctorname*=DM.Doctor_Id 
     AND PPD.RegTypeId*=RTM.RegTypeId 
     AND PPD.Ref_By_Patient*=PPD1.RegistrationNo 
     AND PPD.RegistrationDate >= '01-Oct-2013' 
     AND PPD.RegistrationDate <= '10-Dec-2013' 
ORDER BY LM.LocationName , 
     PPD.RegistrationNo 

错误附近有语法错误在SQL服务器 '* =' 2012

附近有语法错误 '* ='。

请告知

+4

它伤害了我的眼睛。哎哟。 – Raptor

+1

你为什么使用那个操作符?你在加倍ID! –

+5

[不良习惯踢:使用旧式联接](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins。 aspx) - 使用ANSI - ** 92 ** SQL标准(超过** 20年前的**)停用旧式*逗号分隔的表*样式列表。这包括'= *'和'* ='运算符 - 停止使用** RIGHT NOW **并切换到正确的'JOIN'语法,所有问题都会奇迹般地消失.... –

回答

2

*=用作左外连接的快捷方式的语法,而=*是为右外连接的快捷方式。这些连接字段不是使用语法left outer join tablex on x.col1 = ...,而是在where子句中列出。就我个人而言,我会从加入where子句开始迁移。

What is this operand (*= star-equals) in SQL server 2000?

也许这在2012年辗转?尝试将数据库兼容模式更改为9(2005)或10(2008)。