2013-12-10 43 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)。