我有一个有效的SQL Server 2008查询,其中包含以下内容。 EMR_LIVE是针对OraOLEDB.Oracle的链接服务器,后端是Oracle 11g 11.2.0.2.0。
left join OpenQuery(EMR_LIVE
, 'select Person.externalId
, to_char(ml.convert_id_to_date(Document.clinicalDate), ''yyyymmdd'') as clDate
-- , row_number() over (partition by Orders.sdId order by Orders.orderId) as OrdOrder
, Orders.code as orderCode
from ml.Orders
join ml.Document on Orders.sdId = Document.sdId
join ml.Person on Orders.pId = Person.pId
where Person.pId in (
select Obs.pId
from ml.Obs
join ml.ObsHead on Obs.hdId = ObsHead.hdId
where ObsHead.name = ''SCHOOLREGDTE''
and Obs.xId = 1.e+035
and Obs.change = 2
)
') SchoolOrders on pp.PatientId = SchoolOrders.ExternalId
and convert(nvarchar(12), pv.Visit, 112) = SchoolOrders.clDate
但是,如果我取消注释row_number行,我会收到消息'准备查询时出错“'...'”对于链接服务器“EMR_LIVE”的OLE DB提供程序“OraOLEDB.Oracle”执行。
当我省略了ORDER BY子句时,它给了我一个错误,告诉我我需要添加它,但是在我做了之后,它只是厌恶地举起手来说“走开孩子,你在困扰我” 。如果我在Oracle SQL Developer中直接针对服务器运行链接查询(引号为fixed,natch),它就可以了。
对我在这里缺少什么的想法?感谢。