Sql 我该如何正确地将这个校样框起来?
以下代码:Sql 我该如何正确地将这个校样框起来?,sql,sql-server-2008,tsql,collate,Sql,Sql Server 2008,Tsql,Collate,以下代码: SELECT * FROM portal.workflow AS w INNER JOIN portal.workflow_type AS wt ON w.workflow_type_id = wt.workflow_type_id WHERE wt.doc_type IN ('CentreEV', 'Expenditure Voucher') AND w.varchar_1 NOT IN ( select f
SELECT *
FROM portal.workflow AS w
INNER JOIN portal.workflow_type AS wt
ON w.workflow_type_id = wt.workflow_type_id
WHERE wt.doc_type IN ('CentreEV', 'Expenditure Voucher')
AND w.varchar_1 NOT IN ( select f1.BAT_NAME as 'DocumentFile'
from openquery(QICRE_F1, 'select *
from dbo.IO_GLF_BAT_CTL_VW
where bat_stat = ''S'' ') f1
where f1.USAGE_STAT = 'A' )
正在引发以下错误:
Msg 468,级别16,状态9,第1行无法解析排序规则
中“拉丁语通用”与“拉丁语通用”的冲突
这等于操作
我试图用以下方法解决这个问题,但是我收到了一个语法错误。我不知道(即使在看过文档之后)在这种情况下应该如何做:
SELECT *
FROM portal.workflow AS w
INNER JOIN portal.workflow_type AS wt
ON w.workflow_type_id = wt.workflow_type_id
WHERE wt.doc_type IN ('CentreEV', 'Expenditure Voucher')
AND COLLATE Latin1_General_CI_AS w.varchar_1 NOT IN
( select f1.BAT_NAME as 'DocumentFile'
from openquery(QICRE_F1, 'select *
from dbo.IO_GLF_BAT_CTL_VW
where bat_stat = ''S'' ') f1
where f1.USAGE_STAT = 'A' )
您的查询可能有两个问题。试试这样的
...
WHERE ...
AND w.varchar_1 COLLATE Latin1_General_CI_AS IN
...
您可能需要将相同的语法添加到openquery命令中。这就是我不确定它是否能工作的地方,因为您可能需要使用linkedserver.database.schema.table语法——只需要测试它。但是像这样的事情:
from openquery(QICRE_F1, 'select bat_name COLLATE Latin1_General_CI_AS
from dbo.IO_GLF_BAT_CTL_VW
where bat_stat = ''S'' ') f1
祝你好运。如果不明显,请在选择列表中的每个非数字列后面添加COLLATE语句。