无法解析排序规则冲突 - SQL Server 2008 R2的SP1

问题描述:

我试图运行下面的查询:执行这个查询时无法解析排序规则冲突 - SQL Server 2008 R2的SP1

SELECT [id] 
     ,[company_id] 
     ,[entry_no_] 
     ,[project_no_sk] 
     ,[project_no_] 
     ,[task_code_sk] 
     ,[task_code] 
     ,[resource_code_sk] 
     ,[resource_code] 
     ,[work_type_code_sk] 
     ,[work_type_code] 
     ,[date_sk] 
     ,[date] 
     ,(SELECT [Price] 
     FROM [helios_navision_data_mart].[dbo].[dim_resource_prices] 
     WHERE [Project No_]  = [project_no_] 
     AND  [Work Type Code] = [work_type_code] 
     AND  [Task Code]  = CASE WHEN [Task Code] IN (task_code) 
                THEN task_code 
             ELSE '' 
            END 
     ) as [Unit Price] 
     ,[quantity] 
    FROM [dbo].[fact_operational_time_entry] 
    WHERE project_no_ = 'CHM-001' 
    AND [chargeable] = 'Yes' 
    AND [approved] = 'No' 

但我收到的错误:

Msg 468, Level 16, State 9, Line 17 
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CS_AS" and "Latin1_General_CS_AS" in the equal to operation. 

我有检查表格,数据库和服务器的排序规则,并且它们都具有“Latin1_General_CS_AS”作为定义的归类。 错误发生在WHERE子句的某处,但是我看不到哪里......因为排序规则是相同的。

任何人有想法?请帮忙。

KR, 凯文

不知道为什么,但我不得不这样,因为它迫使排序规则的变化修改子查询..

,(SELECT [Price] 
     FROM [helios_navision_data_mart].[dbo].[dim_resource_prices] 
     WHERE [Project No_]  = [project_no_] COLLATE Latin1_General_CS_AS 
     AND  [Work Type Code] = [work_type_code] COLLATE Latin1_General_CS_AS 
     AND  [Task Code]   = (CASE WHEN [Task Code] IN ([task_code] COLLATE Latin1_General_CS_AS) 
                THEN [task_code] COLLATE Latin1_General_CS_AS 
               ELSE '' 
             END) 
     ) as [Unit Price]