У меня есть рабочий запрос 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, я получу сообщение «Произошла ошибка при подготовке запроса« »... для выполнения к поставщику OLE DB« OraOLEDB.Oracle »для связанного сервера« EMR_LIVE ». '
Когда я пропустил предложение ORDER BY, он дал мне ошибку, сообщив мне, что мне нужно добавить его, но после этого он просто с отвращением вскинул руки и сказал: "Уходи, парень, ты меня беспокоишь" , Если я запускаю связанный запрос непосредственно к серверу в Oracle SQL Developer (с фиксированными кавычками, natch), он работает просто отлично.
Есть мысли о том, что мне здесь не хватает? Спасибо.