Запустив следующий запрос, я понял, что у меня есть дубликаты в столбце QueryExecutionId
.
SELECT DISTINCT qe.QueryExecutionid AS QueryExecutionId,
wfi.workflowdefinitionid AS FlowId,
qe.publishing_date AS [Date],
c.typename AS [Type],
c.name As Name
INTO #Send
FROM
[QueryExecutions] qe
JOIN [Campaign] c ON qe.target_campaign_id = c.campaignid
LEFT JOIN [WorkflowInstanceCampaignActivities] wfica ON wfica.queryexecutionresultid = qe.executionresultid
LEFT JOIN [WorkflowInstances] wfi ON wfica.workflowinstanceid = wfi.workflowinstanceid
WHERE qe.[customer_idhash] IS NOT NULL;
Например, при тестировании с одним из этих QueryExecutionIds я могу получить два результата
select * from ##Send
where QueryExecutionId = 169237
Мы поняли, что причина в том, что эти две строки имеют разные FlowId
(второе возвращаемое значение в первом запросе).Обсудив эту проблему, мы решили взять запись с FlowId
с самой поздней датой.Эта дата представляет собой столбец с именем lastexecutiontime
, который находится в третьей объединенной таблице [WorkflowInstances]
, которая также является таблицей, откуда берется FlowId.
Как получить только уникальные значения QueryExecutionId
с последним значениемWorkflowInstances.lastexecution
времени и удалить дубликаты?