Я пытаюсь выяснить, как в основном перебрать некоторый код SQL.У меня есть набор идентификаторов JobID (только целые числа), которые извлекаются из оператора SQL, подобного этому
select jobId from tblJobs_List
, и мне нужно как-то установить их в переменную @jobId и использовать эту переменную в моем большом запросе SQL ниже(обратите внимание на конец запроса в предложении WHERE, ссылающемся на @jobId).Я понимаю, что могу использовать курсор, но когда я это делаю, получаемые наборы результатов являются отдельными.Они не "объединены".Мне нужно как-то объединить результаты.Есть идеи?
select
a.fkJobID as 'JobID',
d.EmailAddress,
d.SubscriberID,
b.CustomObjectName as 'Data Extension Name',
cl.EventDate as 'Last Clicked',
op.EventDate as 'Last Opened',
null as 'DEField1',
null as 'DEField2',
null as 'DEField3',
null as 'DEField4',
null as 'DEField5',
null as 'DEField6',
null as 'DEField7',
null as 'DEField8'
from tbljobs_lists a with (nolock)
inner join dbo.CustomObject b with (nolock) on a.CustomObjectID = b.CustomObjectID
inner join CXXXXXXX._Sent c with (nolock) on c.JobID = a.fkJobID
inner join CXXXXXXX._Subscribers d with (nolock) on d.SubscriberID = c.SubscriberID
LEFT JOIN (select Q1.* from (select cl.SubscriberID, cl.EventDate, RANK()
over (partition by cl.SubscriberID order by cl.EventDate desc) as 'Rank'
FROM CXXXXXXX._Click cl) Q1 where Q1.[Rank] = 1) cl on cl.SubscriberID = d.SubscriberID
LEFT JOIN (select Q1.* from (select op.SubscriberID, op.EventDate, RANK()
over (partition by op.SubscriberID order by op.EventDate desc) as 'Rank'
FROM CXXXXXXX._Open op) Q1 where Q1.[Rank] = 1) op on op.SubscriberID = d.SubscriberID
where a.CustomObjectID is not null and a.fkJobID = @jobid