“之间的排序冲突”;SQL拉丁语通用CP1 CI AS;及;SQL拉丁语“通用”CP1“CS”AS;在等于运算中

“之间的排序冲突”;SQL拉丁语通用CP1 CI AS;及;SQL拉丁语“通用”CP1“CS”AS;在等于运算中,sql,inner-join,collation,Sql,Inner Join,Collation,这是我的密码 SELECT CASE j.ANALYSIS WHEN 'INSTALL' THEN 'ProtectedProperty' WHEN 'REMOVAL' THEN 'UnProtectedProperty' END AS label ,

这是我的密码

    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)               
有一个错误,比如
无法解决“等于”操作中“Latin1_General_CI_AS”和“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突。

两列之间的排序规则不同。在违规等于操作后添加
将拉丁语1_General_CI_作为

例如,如果问题是LIVE_PROPS表:

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

尝试将任何
varchar
类型转换为
nvarchar
,例如
ON cast(col as nvarchar)=cast(colb as nvarchar)
不良表格设计的典型症状。如果你认为你必须向你的查询添加Case/Caltube,你应该再看一看表的设计并考虑改变!可能重复@LONG Mar-尝试将任何varchar类型转换为nvarchar,这是我的情况。谢谢!忘记最初的问题,糟糕的数据库设计。这取决于你是否控制了这个列。我从上游数据库采购,可以进行整理以与edw整理保持一致