I have a SQL Server query as:
SELECT top 1 vConsentInfo FROM
(
SELECT cons.vConsentInfo,cons.dTimeStamp ,logs.iPartnerProfileID
FROM H_OutMessageLog logs INNER JOIN H_OutMessageConsent cons on cons.iOutMessageQID = logs.iOutQueueID
WHERE logs.iPatID = 65686 and logs.iPracID = 4
UNION
SELECT cons.vConsentInfo,cons.dTimeStamp,Q.iPartnerProfileID
FROM H_OutMessageQueue Q INNER JOIN H_OutMessageConsent cons on cons.iOutMessageQID = Q.iOutQueueID
WHERE Q.iPatID = 65686 and Q.iPracID = 4
) A
WHERE A.iPartnerProfileID = Prof.IPartnerProfileID
Order BY dTimeStamp DESC
The table works as : a record get inserted into H_OutMessageQueue at the begining; then its inserted into H_OutMessageConsent…
Now there is a seperate worker process that processes records from H_OutMessageQueue and log them into H_OutMessageLog….
Can I get rid of this UNION thing ? Please note that this is a sub Query of a larger CTE query.
Yes, but it may not be better. You’ll have to work this into your bigger query