Sql – collation conflict between “SQL_Latin1_General_CP1_CI_AS” and “SQL_Latin1_General_CP1_CS_AS” in the equal to operation

collationinner-joinsql

This is my code

    SELECT  
                 CASE j.ANALYSIS  
                       WHEN  'INSTALL'  THEN 'ProtectedProperty'   
                       WHEN  'REMOVAL' THEN 'UnProtectedProperty'  
                 END   AS  label ,  
                       Count(P.PROPERTYREF) AS value   
                 FROM                                                   
                       properties AS p   WITH (NOLOCK)                                      
                 INNER JOIN           
                       jobs AS j  WITH (NOLOCK)
                 ON 
                       j.PROPERTYREF = p.PROPERTYREF          
                 INNER JOIN                                      
                       LIVE_PROPS AS lp   WITH (NOLOCK)           
                 ON  
                       j.PROPERTYREF =lp.PROPERTYREF                   
                 WHERE              
                       j.Completed BETWEEN @dtmStartTime AND @dtmEndTime                  
                 AND             
                       p.OFFICE In (Select OfficeId FROM tempTbl)               

Got an error like
Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.

Best Answer

The collation is different between two of your columns. Add COLLATE Latin1_General_CI_AS after the offending equal to operation.

For example, if the problem was the LIVE_PROPS table:

INNER JOIN LIVE_PROPS AS lp WITH (NOLOCK)
     ON j.POPERTYREF = lp.PROPERTYREF COLLATE Latin1_General_CI_AS